从C#进入WindowsFileCopyAPI有没有办法从C#hook到WindowsFileCopyAPI?我知道这需要非托管代码,但代码示例或入门程序会有所帮助。我看过C++代码,但全是希腊语。更新:我很抱歉,我应该更清楚地说明我的意图。我实际上想将Windows的复制功能更改为更严格(例如,允许排队、调度、处理重启、暂停等)。当我说钩子时,我指的是API钩子,这样当有人开始复制时,我可以获得源和目标,并可以随心所欲地处理它。我之前阅读过HookingtheMacOSAPItodothesethings所以我假设在C++WINAPI世界中有某种等价物。我实际上想将Windows的复制功能更改为更严格您不应该在托管代码中执行此操作,因为您不应该编写托管shell扩展。更新:正如其他人所说,为什么不使用System.IO.File.Copy(...)?它调用相同的底层API。正如MichaelG指出的那样,也许您打算调用FileCopyExAPI以允许您挂钩进度指示回调(???)这实际上是在.NET中P/Invoke文件复制内容的唯一原因。有关如何实现FileCopyEx的详细信息,请访问:http://pinvoke.net/default.aspx/kernel32/CopyFileEx.html原始答案:(你真的不应该使用...)代码片段已删除,因为你真的不应该't使用它...如果你真的想制作损坏的代码,你可以在以下网址找到如何使用它:在http://pinvoke.net/default.aspx/kernel32/CopyFile.html找到另一种使用方式非托管复制文件API的一个好处是能够进行进度回调。您可以在此处查看如何执行此操作的示例。注意:如其他答案中所述,我会使用File.Copy的托管版本,因为它更安全并且通常可以满足您的所有需求。您可以通过调用System.IO.File.Copy来完成此操作。它的内部实现已经使用了WindowsAPI。编辑:File.Copy也能正确处理权限,如果出现故障,可以抛出有意义数据的异常,因此您不必手动检查和分析返回状态。您可以使用DeviareAPIHook来拦截.NET中的任何API并读取VARIANT类型的参数。在C#中有一个完整的示例,很容易理解。以上就是C#学习教程:从C#到WindowsFileCopyAPI的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
