Network programming 无法使用WNetAddConnection2添加映射驱动器

Network programming 无法使用WNetAddConnection2添加映射驱动器,network-programming,drive-mapping,Network Programming,Drive Mapping,我正在尝试使用wnetadconnection2映射驱动器,但有些地方不太正确。我正在使用的代码,一开始似乎是有效的。如果我单步执行代码,我会得到一个0作为响应,并且我能够使用System.IO.Directory.GetFiles()检查新映射的驱动器,这使我相信凭据是正确的 问题是驱动器在应用程序之外不可用。当我在命令提示符下键入net use时,我看到驱动器如下所示: Unavailable L: \\<server>\<share>

我正在尝试使用
wnetadconnection2
映射驱动器,但有些地方不太正确。我正在使用的代码,一开始似乎是有效的。如果我单步执行代码,我会得到一个0作为响应,并且我能够使用
System.IO.Directory.GetFiles()
检查新映射的驱动器,这使我相信凭据是正确的

问题是驱动器在应用程序之外不可用。当我在命令提示符下键入
net use
时,我看到驱动器如下所示:

Unavailable  L:        \\<server>\<share>          Microsoft Windows Network

任何帮助都将不胜感激

下面是问题代码的概要:

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]
*网络资源-[http://msdn.microsoft.com/en-us/library/aa385353%28VS.85%29.aspx][2]

我认为您的问题在于“res.iDisplayType=resourcesplaytype\u SHARE”的显示类型。也许可以尝试将值更改为“0”(RESOURCEDISPLAYTYPE\u GENERIC)。例如,我通常用于映射驱动器的内容如下:


用Res .dwScope=RES\u SCOPE\u GLOBALNET'值2 .dwType=RES_TYPE_DISK'值为1 .dwUsage=RES\u USE\u CONNECT'值为1 .localName=“x:”'为空表示没有驱动器 .RemoteName=“\\\” 以 lRes=wnetadconnection2(Res、sPassword、sDomain&“\”&sPassword、Res\u CNN\u UPDATE\u PROFILE) 如果lRes=0,则 "成功", 其他的 “错误 如果结束
始终在从命令提示符调用之前和之后检查连接:

1a)从系统连接开始,列出当前连接:

net use 净使用 1b)从连接的系统中,列出当前会话:

net session 网络会话 要断开会话,请使用API“WNetCancelConnection2”,我的代码如下所示:


sServer=“\\\” lRes=WNetCancelConnection2(服务器,RES\u CNN\u更新\u配置文件,True) 如果lRes`>0,则 "成功", 其他的 “错误 如果结束
或者,只需使用“net”命令建立连接:

1) 要映射驱动器号,请执行以下操作:

net use `: \\`\` /user:`\` ` 网络使用:`:\``/用户:``` 2) 要映射IPC连接,请执行以下操作:

net use \\`\` /user:`\` ` 网络使用\\``/用户:``` 使用“net”命令断开连接:

1) 断开映射驱动器:

net use `: /delete net使用`:/delete 2) 断开服务器共享:

net use \\`\` /delete 网络使用\\```/删除 net use `: \\`\` /user:`\` ` net use \\`\` /user:`\` ` net use `: /delete net use \\`\` /delete