我正在使用WNetAddConnection2和WNetCancelConnection2来映射或取消映射驱动器.
我想要做的是如下:
我在服务器上映射了一个文件夹(例如:Folder1)(例如:myserver).所以路径是\\ myserver\Folder1,我将它映射到驱动器X.
现在我想在同一个myserver上映射另一个文件夹(例如:Folder2)以编程方式驱动Y.
当我在映射一个文件夹之后调用方法WNetAddConnection2时,它返回1219而不是0并且我得到错误:不允许使用多个用户名由同一用户与服务器或共享资源建立多个连接.断开与服务器或共享资源的所有先前连接,然后重试.
我很困惑,因为我可以通过右键单击MyComputer并选择地图网络驱动器来在同一台服务器上映射Folder2,但不能以编程方式.
我错过了什么或者我需要以不同的方式使用NETRESOURCE结构还是其他任何东西?
谢谢
我正在尝试将共享(假设为\ server\folder)连接到我的本地设备X:
[DllImport("Mpr.dll", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern int WNetAddConnection2(
[In] NetResource lpNetResource,
string lpPassword,
string lpUsername,
int flags
);
public static bool Connect(string remoteName, string localName, bool persistent) {
if (!IsLocalPathValid(localName)) return false;
var r = new NetResource
{
dwScope = ResourceScope.RESOURCE_GLOBALNET,
dwType = ResourceType.RESOURCETYPE_ANY,
dwDisplayType = ResourceDisplayType.RESOURCEDISPLAYTYPE_SHARE,
dwUsage = ResourceUsage.RESOURCEUSAGE_CONNECTABLE,
lpRemoteName = remoteName,
lpLocalName = localName
};
return WNetAddConnection2(r, null, null, persistent ? 1 : 0) == 0;
}
[StructLayout(LayoutKind.Sequential)]
public class NetResource { …
Run Code Online (Sandbox Code Playgroud)