gpt4 book ai didi

c++ - 如何验证用户登录到域或本地

转载 作者:可可西里 更新时间:2023-11-01 09:59:12 33 4
gpt4 key购买 nike

当我的软件运行时,我的软件大多数是获取 windows 用户的登录类型。通过域或本地登录。我需要在 Windows 中获取用户的登录类型。

我认为这些 API 可以帮助我:

GetComputerNameEx( ComputerNameDnsDomain, domainNameBuf, &bufSize );    

GetUserName(sBuffer.GetBuffer(dwUsernameSize), &dwUsernameSize);

LookupAccountName(NULL, 
sUsername,
(PSID)pSid,
&dwSidSize,
sBuffer.GetBuffer(dwDomainNameSize),
&dwDomainNameSize,
(PSID_NAME_USE)&sidType);

nStatus = NetWkstaUserGetInfo(NULL,dwLevel,(LPBYTE *)&pBuf);

最佳答案

使用LsaQueryInformationPolicy使用 PolicyDnsDomainInformation 检索计算机主域的 SID。如果 Sid 成员为 NULL,则计算机未加入域,您可以假设用户登录到本地帐户。

否则,使用GetTokenInformation使用 TokenUser 检索当前用户的 SID,然后使用 GetWindowsAccountDomainSid提取用户 SID 的域部分。

使用 EqualSid 将主域的 SID 与用户的域 SID 进行比较.如果 SID 相等,则用户登录到域帐户;否则,用户将登录到本地帐户。

关于c++ - 如何验证用户登录到域或本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24366203/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com