使用主机名调用时,WNetUseConnection返回ERROR_SESSION_CREDENTIAL_CONFLICT

时间:2015-08-20 07:05:16

标签: remote-access

我有以下代码,仅当使用IP地址指定nr.lpRemoteName服务器部分时才有效。

当它的主机名为ERROR_SESSION_CREDENTIAL_CONFLICT时将被返回。

我可以使用运行此代码的计算机上的主机名访问该文件。

有什么想法吗?

[DllImport("Mpr.dll")]
private static extern int WNetUseConnection(
    IntPtr hwndOwner,
    NETRESOURCE lpNetResource,
    string lpPassword,
    string lpUserID,
    int dwFlags,
    string lpAccessName,
    string lpBufferSize,
    string lpResult
    );

[StructLayout(LayoutKind.Sequential)]
private class NETRESOURCE
{
    public int dwScope = 0;
    public int dwType = 0;
    public int dwDisplayType = 0;
    public int dwUsage = 0;
    public string lpLocalName = "";
    public string lpRemoteName = "";
    public string lpComment = "";
    public string lpProvider = "";
}
    string password = "12345";
    string username = "ole1";
    const int RESOURCETYPE_DISK = 0x00000001;

    NETRESOURCE nr = new NETRESOURCE();
    nr.dwType = RESOURCETYPE_DISK;
    nr.lpRemoteName = @"\\[IP Address]\vids";

    //nr.lpRemoteName = @"[Host Name]\vids";


    int ret = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, null, null, null);

1 个答案:

答案 0 :(得分:0)

这表示您的Windows登录会话已与该主机建立连接,但该连接在[username]参数中传递了另一个值。

  

1219(0x4C3)

     

不允许同一用户使用多个用户名与服务器或共享资源建立多个连接。断开先前所有与服务器或共享资源的连接,然后重试。

可能的解决方案:

  • 删除旧连接并建立新连接,或者
  • 在[用户名]或
  • 中传递旧连接的相同值
  • 开始新的登录会话并可能通过模拟来建立自己的网络连接集。