Windows模拟LogonUser错误

时间:2014-07-07 23:27:09

标签: 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);

我收到以下错误: The trust relationship between this workstation and the primary domain failed NativeErrorCode 1798。

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

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

有关如何调试此问题的任何建议?解决方案?建议?

1 个答案:

答案 0 :(得分:3)

所以我找到了答案。 LOGON32_LOGON_INTERACTIVE不对。 LOGON32_LOGON_NEW_CREDENTIALS是使用的。

this page上,他们描述了变量是什么,而不是值。您需要实际查看#define中的winbase.h(我发现版本为here),其中显示了这些变量的值。在这种情况下,您需要使用登录类型值9而不是2。在C#land中,它只是更多的工作,但......它的工作原理:))