2009-11-09 122 views
0

我试图使用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。

回答

1

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