我正在尝试使用 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/