首先,这里是限制条件:
- 必须在 XP 上运行
- 必须通知驱动器号分配和将卷安装到文件夹
- 不得“唤醒”正在休眠的驱动器。
- 我真的不想轮询驱动器。
我尝试过的:
- 谷歌
- 我查看了 WMI 和 Win32_LogicalDisk 类。我可以确定哪些驱动器安装到驱动器号,但不能确定安装到文件夹的驱动器。 Win32_Volume* 和 Win32_MountPoint 类将是完美的,但在 XP 上不可用。
- 我已经尝试使用 FindFirstVolume 和 GetVolumePathNamesForVolumeName 轮询驱动器(尽管我不想这样做),但似乎必须先启动驱动器才能提供信息。再一次,呃,轮询。
我正在考虑使用 API Hook 来 Hook 对 SetVolumeMountPoint 和 DeleteVolumeMountPoint 的调用的可能性,但我认为这不会捕获所有内容,而且看起来这可能是一个丑陋的 hack。
所以,是的,我正在寻找建议:)
最佳答案
SetVolumeMountPoint 上的 API Hook 应该可以让您拦截卷挂载。不过我不确定网络共享。
但这不会是一个“丑陋的黑客”。您正在尝试做的是 Windows 中内置的 Hook 。 Codeproject.com 有很棒的 API Hook 教程:http://www.codeproject.com/KB/system/hooksys.aspx
所以你实际上陈述了你自己的最佳解决方案。请记住,还有一个单独的驱动器号 API:http://nukz.net/reference/fileio/hh/winbase/fsys_6j8z.htm
您的项目听起来很有趣。通常,特洛伊木马和防病毒软件会尝试执行此操作(并且它们还会捕获网络共享。)我只是对这个话题很熟悉,所以我希望这对您有所帮助。
关于windows - 当用户创建挂载点时如何获得通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226758/