无法访问使用WNetAddConnection2添加映射驱动器
我试图使用WNetAddCOnnection2
映射驱动器,但有些事情不太正确。我使用的代码从pinvoke.net开始似乎工作。如果我单步执行代码,我会得到一个0作为响应,并且我可以使用System.IO.Directory.GetFiles()
来检查新的映射驱动器,这使我相信证书是正确的。无法访问使用WNetAddConnection2添加映射驱动器
问题是驱动器在应用程序之外不可用。当我从命令提示符下键入net use
我看到这样列出的驱动:
Unavailable L: \\<server>\<share> Microsoft Windows Network
当我尝试访问该驱动器我得到两种:
The system cannot find the drive specified.
或
The system cannot find the path specified.
任何帮助将不胜感激。
下面的代码的问题概括地说:
NETRESOURCE res = new NETRESOURCE();
res.iScope = RESOURCE_GLOBALNET;
res.iType = RESOURCETYPE_DISK;
res.iDisplayType = RESOURCEDISPLAYTYPE_SHARE;
res.iUsage = RESOURCEUSAGE_CONNECTABLE;
res.sRemoteName = share;
res.sLocalName = drive;
res.sProvider = null;
int iFlags = 0;
iFlags = CONNECT_UPDATE_PROFILE;
int iResult = WNetAddConnection2(ref res, psPassword, psUsername, iFlags);
的iResult
最终总是等于0。
MSDN文章,可能帮助:
* WNetAddConnection2 - [HTTP:// msdn.microsoft.com/en-us/library/aa385413%28VS.85%29.aspx][1]
* NETRESOURCE - [http://msdn.microsoft.com/en-us/library/aa385353%28VS .85%29.aspx] [2]
我认为你的问题是“res.iDisplayType = RESOURCEDISPLAYTYPE_SHARE”的显示类型。也许尝试更改为值“0”(RESOURCEDISPLAYTYPE_GENERIC)。因此,举例来说,我一般使用映射驱动器出现:
With Res .dwScope = RES_SCOPE_GLOBALNET 'value 2 .dwType = RES_TYPE_DISK 'value of 1 .dwUsage = RES_USE_CONNECT 'value of 1 .localName = "x:" 'leave blank for no drive .RemoteName = "\\\" End With lRes = WNetAddConnection2(Res, sPassword, sDomain & "\" & sPassword, RES_CNN_UPDATE_PROFILE) If lRes = 0 Then 'Success Else 'Error End If
始终&前检查从命令提示符下调用后您的连接:
1A)从系统进行连接,列表当前连接:
net use
1b)从连接的系统,列表curr耳鼻喉科会议:
net session
要断开会话,使用API 'WNetCancelConnection2',从上面下面我的代码:
sServer = "\\\" lRes = WNetCancelConnection2(sServer, RES_CNN_UPDATE_PROFILE, True) If lRes `> 0 Then 'Success Else 'Error End If
或者,只是简单地提出使用 'net' 的命令连接:
1)要映射驱动器号:
net use `: \\`\` /user:`\` `
2)要映射的IPC连接:
net use \\`\` /user:`\` `
使用断开 'net' 的命令:
1)断开映射的驱动器:
net use `: /delete
2)断开服务器共享:
net use \\`\` /delete