在c#中模拟使用FolderDialog打开网络文件夹
本文关键字:网络 文件夹 FolderDialog 模拟 | 更新日期: 2023-09-27 18:12:40
我正在使用以下代码来冒充第三个用户并试图访问文件夹。
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
}
}
}
我仍然无法访问文件夹。请帮我找出我在这里做错了什么。
LogonUser接受用户名、域和密码,并返回一个可以与WindowsIdentity一起使用的令牌。除了这些参数之外,LogonUser还想知道要使用哪个登录提供者(默认值对于大多数情况应该足够)和登录类型选择登录类型可能比较棘手,因此Options为
登录类型(LOGON32_LOGON_xxx) 整型值(来自WinBase.h)
LOGON32_LOGON_BATCH <</strong strong> 4>
LOGON32_LOGON_INTERACTIVE
您的问题通过使用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);