2008-10-22 37 views
4

首先,这里的约束:用户创建安装点时如何获得通知?

  • 必须在XP
  • 运行必须通知两个驱动器号分配和安装的卷到一个文件夹
  • 切不可“唤醒”一个驱动器,如果它是睡眠。
  • 我真的不想投票驱动器。

我已经试过:

  1. 谷歌
  2. 我已经看了WMI和Win32_LogicalDisk类。我可以确定哪些驱动器安装到驱动器盘符,但不能安装到文件夹。 Win32_Volume *和Win32_MountPoint类将是完美的,但在XP上不可用。
  3. 我试过使用FindFirstVolume轮询驱动器& GetVolumePathNamesForVolumeName(尽管我宁愿不这样做),但看起来驱动器必须在启动之前就可以提供信息。再次,投票。

我正在考虑使用API​​钩子钩到SetVolumeMountPoint和DeleteVolumeMountPoint电话的可能性,但我不认为这会赶上一切,好像这可能是一个丑陋的黑客无论如何。

所以,是的,我正在寻找的建议:)

回答

2

上SetVolumeMountPoint API钩子应该让你拦截卷安装。虽然我不确定网络共享。

但它不会是一个'丑陋的黑客'。你想要做的是在Windows中内置什么钩子。 Codeproject.com有关API挂钩的很好的教程:http://www.codeproject.com/KB/system/hooksys.aspx

所以,你实际上说明了你自己的最佳解决方案。请记住,驱动器号还有一个单独的API:http://nukz.net/reference/fileio/hh/winbase/fsys_6j8z.htm

您的项目听起来很有趣。通常情况下,木马和反病毒试图做到这一点(他们也捕获网络共享。)我只是随便熟悉这个主题,所以我希望这有助于。