Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测未用于映射网络共享的驱动器号 我正在编写一个C++应用程序,它运行为Windows Service Win XP、Vista、7, 8、服务器。 我的应用程序使用第三个patry库,该库将本地文件夹映射到驱动器,该驱动器应在用户模式下可供所有用户使用。当用户将某些网络共享映射到本地驱动器,而第三方库无法识别指定的驱动器号已在使用时,就会出现此问题。 问题是如何从服务应用程序中确定所需的驱动器号是否确实可用? 我正在使用 GetLogicalDrives QueryDosDevice_C++_Windows_Winapi_Windows Services_Network Share - Fatal编程技术网

检测未用于映射网络共享的驱动器号 我正在编写一个C++应用程序,它运行为Windows Service Win XP、Vista、7, 8、服务器。 我的应用程序使用第三个patry库,该库将本地文件夹映射到驱动器,该驱动器应在用户模式下可供所有用户使用。当用户将某些网络共享映射到本地驱动器,而第三方库无法识别指定的驱动器号已在使用时,就会出现此问题。 问题是如何从服务应用程序中确定所需的驱动器号是否确实可用? 我正在使用 GetLogicalDrives QueryDosDevice

检测未用于映射网络共享的驱动器号 我正在编写一个C++应用程序,它运行为Windows Service Win XP、Vista、7, 8、服务器。 我的应用程序使用第三个patry库,该库将本地文件夹映射到驱动器,该驱动器应在用户模式下可供所有用户使用。当用户将某些网络共享映射到本地驱动器,而第三方库无法识别指定的驱动器号已在使用时,就会出现此问题。 问题是如何从服务应用程序中确定所需的驱动器号是否确实可用? 我正在使用 GetLogicalDrives QueryDosDevice,c++,windows,winapi,windows-services,network-share,C++,Windows,Winapi,Windows Services,Network Share,确定逻辑设备。我试过了 WNetGetConnection WNetGetUniversalName 检索有关网络共享的信息,但这些函数不会为所需的驱动器号返回任何内容,尽管存在映射到指定驱动器号的共享。 我猜问题出在私人领域。由于我的应用程序以服务的形式运行,所以它无法获取有关以用户模式映射的共享的信息,这对我来说很奇怪。 因此,最后一个问题是-如何检测指定的驱动器号是否未被任何用户用于映射网络共享?问题实际上是,用户可以持有的共享和管理员可以持有的共享可能存在差异 注册表中有一个标志控制此

确定逻辑设备。我试过了

WNetGetConnection
WNetGetUniversalName
检索有关网络共享的信息,但这些函数不会为所需的驱动器号返回任何内容,尽管存在映射到指定驱动器号的共享。 我猜问题出在私人领域。由于我的应用程序以服务的形式运行,所以它无法获取有关以用户模式映射的共享的信息,这对我来说很奇怪。
因此,最后一个问题是-如何检测指定的驱动器号是否未被任何用户用于映射网络共享?

问题实际上是,用户可以持有的共享和管理员可以持有的共享可能存在差异

注册表中有一个标志控制此操作:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
EnableLinkedConnections=1 DWord

这里还有一个例子可以解释这一点。使用设置为1的EnableLinkedConnections可以解决此问题。通常设置为1


背景:当UAC发明时,这种变化只是一个副作用

您是否尝试过在该用户的上下文登录下运行该服务?我尝试过,应用程序检测到使用subst映射的共享,但它没有检测到使用explorer的映射网络驱动器映射的共享。我将EnableLinkedConnections设置为1,重新记录,并且没有任何更改。谢谢你的文章。重新启动计算机可能需要它。请记住,会话可能仍处于拆分状态。所以有两个信息。一个用于用户模式,一个用于管理模式。如果在用户模式下添加映射,会发生什么。它现在应该以管理员的身份显示。如果您以管理员身份打开cmd.exe提示符,然后按NET USE,会发生什么情况?它肯定需要重新启动。重新启动后,管理员的net use显示了由旧用户和新用户创建的共享。但WNetGetConnection和WNetGetUniversalName都没有返回任何适当的结果。此外,使用subst安装的共享仍然不可见。无论如何,这种方法不是很好,因为它需要UAC修改,这在客户端计算机上不是很合适。。