c# - Windows 模拟 LogonUser 错误

标签 c# authentication impersonation

我正在尝试使用 this code从我的本地计算机 (Windows 8.1) 登录到受限网络共享(在头节点上使用 Windows Server 2012),但我似乎无法让它工作。

两台机器都在同一个域(已验证),我使用的帐户是我本地机器上的管理员,我试图模拟的帐户在托管共享的机器上具有管理员权限。我可以使用凭据挂载共享。

但是当我运行这行代码时:

bool returnValue = LogonUser(userName, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out safeTokenHandle);

我收到以下错误: 此工作站与主域之间的信任关系失败 NativeErrorCode 1798.

无论我使用什么凭据,这似乎都会发生 - 如果我使用自己的凭据(我知道这很好!),就会发生这种情况。

我似乎无法为此找到解决方案 - 我找到的文档是针对不同的用例(我认为),并且涉及从域中删除一台机器(哪一台?)并重新加入。

关于如何调试这个有什么建议吗?解决方案?有什么建议吗?

最佳答案

于是我找到了答案。 LOGON32_LOGON_INTERACTIVE 不对。 LOGON32_LOGON_NEW_CREDENTIALS 是要使用的。

关于 this page它们描述了变量是什么,但没有描述值。您实际上需要查看 winbase.h 中的 #define(我发现了一个版本 here),它显示了这些变量的值。在这种情况下,您需要使用登录类型值 9 而不是 2。在 C# 领域,它只是多了一点工作,但是......它有效:)

关于c# - Windows 模拟 LogonUser 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24621506/

相关文章:

c# - 找不到方法 : 'System. String System.String.Format(System.IFormatProvider, System.String, System.Object)

c# - 使用两点捕获屏幕截图

c# - 如何将 Func<T,bool> 转换为 Expression<Func<T,bool>>

security - 是否可以在不登录的情况下模拟用户?

asp.net - 如何将用户身份从一个 IIS 中托管的 Web 应用程序传递到另一个 IIS 中托管的 Web 服务?

c# - 签署程序集 - 基础知识

php - 防止使用 PHP CURL 的远程脚本登录网站

Laravel 身份验证,我无法检索登录用户

c# - 验证当前经过身份验证的 Windows 用户是否具有委派权限

http - 如何抑制由 WWW-Authenticate header 引起的登录对话框?