UNC LogonUser:未知用户或密码错误

时间:2013-01-28 16:00:43

标签: c# asp.net

我有一个奇怪的场景。我的应用程序连接到文件服务器,以使用UNC列出目录中的文件。它在过去几年一直没有任何问题。最近,我的网络管理员重新启动了服务器,结果我开始收到LogonUser:未知用户或密码错误。根据网络管理员,所有内容都已正确设置为域用户帐户。用户名和密码都是正确的。我需要在下面的代码中更改哪些内容?

const int LOGON32_LOGON_INTERACTIVE = 2;
const int LOGON32_LOGON_NETWORK = 3;
const int LOGON32_LOGON_BATCH = 4;
const int LOGON32_LOGON_SERVICE = 5;
const int LOGON32_LOGON_UNLOCK = 7;
const int LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
const int LOGON32_LOGON_NEW_CREDENTIALS = 9;
const int LOGON32_PROVIDER_DEFAULT = 0;

[DllImport("advapi32.dll", SetLastError = true)]
public static extern int LogonUser(
    string lpszUsername,
    string lpszDomain,
    string lpszPassword,
    int dwLogonType,
    int dwLogonProvider,
    out IntPtr phToken
    );
[DllImport("advapi32.dll", SetLastError = true)]
public static extern int ImpersonateLoggedOnUser(
    IntPtr hToken
);

[DllImport("advapi32.dll", SetLastError = true)]
static extern int RevertToSelf();

[DllImport("kernel32.dll", SetLastError = true)]
static extern int CloseHandle(IntPtr hObject);
int TResult = LogonUser(ConfigurationManager.AppSettings["ServerUserName"].ToString(), @"\\server\folder", ConfigurationManager.AppSettings["ServerPassword"].ToString(), LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, out lnToken);

请告知我应该向网络管理员查询的其他内容。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我没有看到您正在执行的代码本质上存在任何错误。所以,我不确定为什么会突然停止工作。但是,如果您对一些重新分解开放,似乎有其他人遇到了类似的问题。以下答案之一应该为您提供所需的洞察力。

How to Impersonate a user for a file copy over the network when dns or netbios is not available

Accessing Password Protected Network Drives in Windows in C#?