我有一个奇怪的场景。我的应用程序连接到文件服务器,以使用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);
请告知我应该向网络管理员查询的其他内容。提前谢谢。
答案 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#?