无法使用WNetAddConnection2查看已安装的驱动器

时间:2011-03-08 12:57:35

标签: visual-c++ windows-services

我无法在使用VC ++编写的Windows服务中使用WNetAddConnection2W查看已安装的驱动器

当我调试服务时,它返回成功但是当我打开资源管理器以查看已安装的驱动器时它不存在。 我在Windows服务中执行此操作,其中我的服务在administartor previliages中运行。 我的代码如下:

    lpNetResource->lpRemoteName = L"\\\\172.24.18.240\\praveena\\CIFS";
    lpNetResource->lpLocalName = L"Z:"; 
dwRetVal = WNetAddConnection2W(lpNetResource, wcpPassword, wcpUserName, CONNECT_UPDATE_RECENT); 

当我在MFC应用程序中使用相同的代码时,它可以正常工作。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在另一个会话中添加或删除驱动器时(如果是Windows服务),资源管理器无法知道这一点。

为了在我们的回调文件系统库中解决这个问题,该库创建了虚拟驱动器(用户从服务中执行此操作),我们实现了一个特殊的shell扩展DLL。 此DLL侦听由用户模式代码发送的信号,该代码执行磁盘创建(并在服务上下文中执行)。当DLL收到信号时,它会广播WM_DEVICECHANGE系统消息。然后资源管理器捕获此消息并重新扫描设备列表。