系统相关
首页 > 系统相关> > Windows模拟LogonUser错误

Windows模拟LogonUser错误

作者:互联网

我试图使用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#领域中,这需要做更多的工作,但是…有效:)

标签:impersonation,authentication,c
来源: https://codeday.me/bug/20191121/2052495.html