我正在使用以下代码冒充第三个用户并尝试访问文件夹。
Boolean success = LogonUser("username", "domain", "password", 2, 0, out userToken);
if (success)
{
var wi = new WindowsIdentity(userToken, "WindowsAuthentication");
using (wi.Impersonate())
{
if (fbdPatches.ShowDialog() == DialogResult.OK)
{
// try to access folder which can be accessed only through above credentials
}
}
}
仍然无法访问文件夹。请帮我看看我在这里做错了什么。
答案 0 :(得分:0)
LogonUser 获取用户名,域名和密码,并返回一个我们可以与WindowsIdentity一起使用的令牌。除了这些参数之外,LogonUser还想知道要使用哪个登录提供程序(默认情况下应该足以满足大多数情况),登录类型选择登录类型可能很棘手,因此选项
登录类型(LOGON32_LOGON_xxx) 整数值(来自WinBase.h)
LOGON32_LOGON_BATCH 4
LOGON32_LOGON_INTERACTIVE 2
LOGON32_LOGON_NETWORK 3
LOGON32_LOGON_NETWORK_CLEARTEXT 8
LOGON32_LOGON_NEW_CREDENTIALS 9
LOGON32_LOGON_SERVICE 5
使用NEW_CREDENTIALS选项进行登录可解决您的问题。
例如:
Boolean success = LogonUser("username", "domain", "password", 9, 0, out userToken);
或
Boolean success = LogonUser("username", "domain", "password", LOGON32_LOGON_NEW_CREDENTIALS, 0, out userToken);