首先,这是限制:
- 必须在XP上运行
- 必须通知驱动器盘符分配以及将卷安装到文件夹
- 如果驱动器正在睡眠,则不得“唤醒”该驱动器。
- 我真的不想轮询驱动器。
我尝试过的:
- Google
- 我查看了 WMI 和 Win32_LogicalDisk 类。我可以确定哪些驱动器安装到驱动器号,但不能确定哪些驱动器安装到文件夹。 Win32_Volume* 和 Win32_MountPoint 类是完美的,但在 XP 上不可用。
- 我尝试使用 FindFirstVolume 和 GetVolumePathNamesForVolumeName 轮询驱动器(尽管我不想这样做),但似乎驱动器必须先旋转才能向我提供信息。再次,呃,民意调查。
我正在考虑使用 API 挂钩来挂钩对 SetVolumeMountPoint 和 DeleteVolumeMountPoint 的调用的可能性,但我认为这不会捕获所有内容,而且看起来这可能是一个丑陋的黑客行为。
所以,是的,我正在寻找建议:)
SetVolumeMountPoint 上的 API 挂钩应该可以让您拦截卷挂载。但我不确定网络共享。
但这不会是一个“丑陋的黑客”。您想要做的是 Windows 中内置的挂钩的用途。 Codeproject.com 有关于 API hooking 的精彩教程:http://www.codeproject.com/KB/system/hooksys.aspx http://www.codeproject.com/KB/system/hooksys.aspx
所以你实际上说出了你自己的最佳解决方案。请记住,还有一个单独的驱动器号 API:http://nukz.net/reference/fileio/hh/winbase/fsys_6j8z.htm http://nukz.net/reference/fileio/hh/winbase/fsys_6j8z.htm
你的项目听起来很有趣。通常,特洛伊木马和防病毒软件会尝试执行此操作(它们也会捕获网络共享)。我只是偶尔熟悉这个主题,所以我希望这会有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)