2

有没有办法以编程方式找出映射的驱动器当前是否正在使用?如果我尝试使用 卸载驱动器net use,并且该驱动器正在使用中,它会告诉我该驱动器正在使用中并提示我采取进一步措施。

如果不再使用驱动器,我希望能够自动取消映射驱动器。系统是Windows XP。

4

2 回答 2

1

如果这是一个内部应用程序,作为一个低技术的简单解决方案,我建议从TechnetHandle下载该应用程序并从您的进程中执行,然后您的进程可以读取结果并过滤每个驱动器,以查看其中是否有任何驱动器在您的驱动器上重新感兴趣。

请注意,我没有检查许可条款是否Handle实际允许这种用法,但它们会在您第一次执行时弹出,以便您随后检查它们。

于 2010-06-02T07:48:54.577 回答
1

在较高级别上,您需要枚举所有打开的文件句柄(或者更确切地说是所有打开的句柄,然后过滤除文件句柄之外的所有内容),然后查找其对象名称与映射的网络驱动器的设备名称匹配的任何文件句柄。

它有很多低级 Win32 API(NtQuerySystemInformation、NtQueryInformationFile、NtQueryObject 等),但它绝对是可行的。如果您要走这条路,我建议您阅读Windows Internals的副本,并浏览 MSDN 和 Mark Russinovich 的博客

我不认为这是你会在这里得到完整答案的类型,除非可能已经有一个开源项目可以链接到它。例如,Sysinternals 工具的源代码过去是免费提供的,现在仍然可以找到,比如这个v4.3x 版本的 FileMon 源代码,这可能会有所帮助。

于 2010-06-02T07:39:16.250 回答