c# - 在 Windows 中处理系统文件夹事件

标签 c# winapi event-handling filesystems

我正在编写一些 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 外壳 http://msdn.microsoft.com/en-us/library/bb776778%28v=VS.85%29.aspx 如果这还不够痛苦,您可以尝试编写一个 shell 程序。

如果你正在尝试编写一个 rootkit,我想你不希望我为你破坏细节。如果您不想编写 Rootkit,我建议您仔细查找。有开源的 Rootkit,它们基本上都必须以这种方式监控文件访问以隐藏用户/操作系统。

关于c# - 在 Windows 中处理系统文件夹事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479583/

相关文章:

c# - 有没有办法让控制台应用程序仅使用 .NET Core 中的单个文件运行?

c# - 如何获取RowUpdating事件GridView中的单元格值?

java - 订阅按钮点击而不内联实现

Javascript - 事件处理程序中的变量范围

c# - 在 Asp.Net Identity 2 中构建自定义用户检查密码

c# - 为什么在LINQ查询中调用方法时不能使用范围值的属性作为参数?

winapi - 如何将 RawWindowHandle::Windows 传递给 winapi::winuser::SetWindowPos

c++ - 调用 VirtualProtect 设置了错误的保护

c# - 使用字符串的 delim 标记字符串

python - 使用 Kivy 为同一事件添加多个处理程序的最佳/正确方法是什么?