Gab*_*rio 8 c# filesystems winapi event-handling
我正在编写一些C#代码,我需要检测应用程序运行时是否已打开Windows文件系统上的特定文件夹.有什么办法吗?WinAPI可能吗?
我认为您应该检查以下三个 API:
FindFirstChangeNotification() http://msdn.microsoft.com/en-us/library/aa364417%28VS.85%29.aspx 这为您提供了一个句柄,您可以等待并使用它来查找特定文件中文件的更改,目录或目录树。它不会告诉您何时浏览目录,但它会告诉您何时保存文件、重命名等等。
SetWindowsHookEx() http://msdn.microsoft.com/en-us/library/ms644990%28v=VS.85%29.aspx 您可以将其设置为在发生任意数量的事件时给您回调 - 事实上我我非常肯定您可以在打开目录时获得此回调,但这可能会非常困难,因为您将拦截发送到资源管理器窗口的消息。因此,您将在调试期间重新启动。
Windows Shell http://msdn.microsoft.com/en-us/library/bb776778%28v=VS.85%29.aspx 如果这还不够痛苦,您可以尝试编写一个 shell 程序。
如果您正在尝试编写 Rootkit,我想您不希望我破坏您的详细信息。如果您不想编写 rootkit,我建议您仔细查找。有开源 Rootkit,它们基本上都必须以这种方式监视文件访问以隐藏用户/操作系统。