出于某种奇怪的原因,当我编组LogonUser DLLImport
参数时,我在使用登录类型时不再能够成功INTERACTIVE
登录,它适用于NETWORK
登录类型。
这是我的代码:
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool LogonUser
(
[MarshalAs(UnmanagedType.LPStr)]
String lpszUsername,
[MarshalAs(UnmanagedType.LPStr)]
String lpszDomain,
[MarshalAs(UnmanagedType.LPStr)]
String lpszPassword,
int dwLogonType,
int dwLogonProvider,
out IntPtr hToken
);
bResult = LogonUser(
"username",
".",
"password",
(int)LogonType.INTERACTIVE, // = 2
(int)LogonProvider.DEFAULT, // = 0
out hToken
);
现在,我对 LogonUser的Logon Exception: Logon failure: unknown user name or bad password
调用失败[MarshalAs(UnmanagedType.LPStr)]
了(DLLImport
LogonType.NETWORK
INTERACTIVE
可悲的是,我需要保留它,因为我将它与其他功能一起使用,例如LoadUserProfile
需要对其进行编组(只有这样我才能让它工作而不显示未知的 Windows 字符 [正方形])。我是否需要对字符串进行一些时髦的编组或其他操作以使其正确验证?
任何帮助,将不胜感激。谢谢,