如何验证登录到域或本地的用户
How to verify user logged in to domain or locally
当我的软件运行时,我的软件大多数是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相等,则用户登录到域帐户;
尝试使用GetUserNameEx(NameUserPrincipal,…)获取登录用户的UPN。
您可以用一种简单的方式做到这一点,为什么不直接使用GetEnvironmentVariable来检索USERDOMAIN
,然后与COMPUTERNAME
进行比较呢?如果它们相同,则用户在本地登录,否则,用户使用域登录。
您还获得了命令行WHOAMI.EXE
,它为您提供了信息,我使用的命令行是检索WMI对象win32_computersystem
。
相关文章:
- 如何在 c++ 中将密码和用户名保存到 .txt 文件中.如果用户尝试登录,我仍然希望能够检索它们
- Win7 C++ - 从以用户身份登录的服务启动可执行文件的问题
- 用户注销/登录后,创建托盘图标时出现罕见错误
- 是否有任何 C 函数或 API 来获取当前登录用户下运行的进程列表
- 如何从 Windows 上的服务在未登录用户的桌面上启动应用程序
- 获取 Windows 系统已加入 Azure AD 时登录用户的 UserPrincipalName
- 加密用户数据,而不会丢失安卓应用程序中的登录用户
- 如何检查用户登录到Windows的时间
- 嗨,我正在尝试编码一个允许用户在Visual C 中登录的按钮,程序正在运行,但表单对话框未显示
- 如何从非管理员用户获取当前登录的用户名、域名和用户 sid
- 我如何将登录的用户登录到当前会话中的域用户
- C++检查是否有用户登录到Windows7
- 如何添加基于时间的限制以阻止Windows用户登录
- 在C++中跟踪用户登录的可行性
- 应用程序是不可见的,如果没有任何用户登录从任务调度程序启动
- c++服务-模拟用户登录
- 在Linux/Mac上使用c++检测/等待用户登录
- C++:如何在 Windows 凭据管理器中以编程方式创建本地用户登录凭据,以便"runas /savecred"可以使用它?
- 如何在用户登录/关闭或PC进入睡眠/休眠时正确通知c++ Windows服务
- 如何在多个用户登录Windows时获取活动用户