【问题标题】:How do I get a notification when user creates a mount point?用户创建挂载点时如何收到通知?
【发布时间】:2010-09-18 14:41:14
【问题描述】:

首先,这里是约束:

  • 必须在 XP 上运行
  • 必须通知驱动器号分配和将卷安装到文件夹
  • 不得“唤醒”处于睡眠状态的驱动器。
  • 我真的不想轮询驱动器。

我尝试过的:

  1. 谷歌
  2. 我查看了 WMI 和 Win32_LogicalDisk 类。我可以确定哪些驱动器已安装到驱动器号,但不能确定哪些驱动器已安装到文件夹。 Win32_Volume* 和 Win32_MountPoint 类是完美的,但在 XP 上不可用。
  3. 我已尝试使用 FindFirstVolume 和 GetVolumePathNamesForVolumeName 轮询驱动器(尽管我不想这样做),但似乎必须先启动驱动器才能为我提供信息。再次,嗯,投票。

我正在考虑使用 API 挂钩来挂钩对 SetVolumeMountPoint 和 DeleteVolumeMountPoint 的调用,但我认为这不会捕获所有内容,而且看起来这可能是一个丑陋的 hack。

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

【问题讨论】:

    标签: windows winapi


    【解决方案1】:

    在 SetVolumeMountPoint 上的 API 挂钩应该让您拦截卷安装。不过我不确定网络共享。

    但这不会是一个“丑陋的黑客”。您正在尝试做的是 Windows 中内置的挂钩。 Codeproject.com 有很棒的 AP​​I 挂钩教程:http://www.codeproject.com/KB/system/hooksys.aspx

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

    您的项目听起来很有趣。通常,木马和杀毒软件会尝试这样做(并且它们也会捕获网络共享。)我只是对这个主题很熟悉,所以我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多