【问题标题】:Adding a mapped drive with WNetAddConnection2 is not accessible无法使用 WNetAddConnection2 添加映射驱动器
【发布时间】:2010-12-14 18:27:38
【问题描述】:

我正在尝试使用WNetAddCOnnection2 映射驱动器,但有些地方不太对劲。我使用的代码来自pinvoke.net,起初似乎可以工作。如果我单步执行代码,我会得到一个 0 作为响应,并且我可以使用 System.IO.Directory.GetFiles() 检查新映射的驱动器,这让我相信凭据很好。

问题是驱动器在应用程序之外不可用。当我在命令提示符下键入 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 结束。

【问题讨论】:

    标签: network-programming drive-mapping


    【解决方案1】:

    可能有帮助的 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 = RESOURCEDISPLAYTYPE_SHARE”的显示类型。也许尝试更改为“0”值(RESOURCEDISPLAYTYPE_GENERIC)。因此,例如,我通常用来映射驱动器的出现:


    有水库 .dwScope = RES_SCOPE_GLOBALNET '值 2 .dwType = RES_TYPE_DISK '值为 1 .dwUsage = RES_USE_CONNECT '值为 1 .localName = "x:" '留空表示没有驱动器 .RemoteName = "\\\" 结束于 lRes = WNetAddConnection2(Res, sPassword, sDomain & "\" & sPassword, RES_CNN_UPDATE_PROFILE) 如果 lRes = 0 那么 '成功 别的 '错误 万一

    始终在命令提示符调用之前和之后检查您的连接:

    1a) 从系统建立连接,列出当前连接:

    净使用

    1b) 从系统也连接,列出当前会话:

    净会话

    要断开会话,请使用 API 'WNetCancelConnection2',我的代码如下:


    sServer = "\\\" lRes = WNetCancelConnection2(sServer, RES_CNN_UPDATE_PROFILE, True) 如果 lRes `> 0 则 '成功 别的 '错误 万一

    或者,只需使用“net”命令进行连接:

    1) 映射驱动器号:

    净使用 `: \\`\` /user:`\` `

    2) 映射 IPC 连接:

    网络使用 \\`\` /user:`\` `

    使用“net”命令断开连接:

    1) 断开映射驱动器:

    净使用`:/删除

    2) 断开服务器共享:

    净使用\\`\` /删除

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 2011-03-10
      • 2016-05-28
      • 2011-02-15
      • 1970-01-01
      • 2017-10-03
      相关资源
      最近更新 更多