使用WMI获取当前用户名

发布于 2024-09-10 19:38:59 字数 266 浏览 5 评论 0原文

我正在使用 Win32_NetworkLoginProfile 或 Win32_Account 来获取系统的用户列表。对这些对象的调用返回大量用户,一些是本地用户,一些属于域(如果系统是域的一部分)。

有没有办法使用WMI获取当前用户名? 如果是,怎么办?

此外,使用 Win32_Account 我可以检查我列出的用户名是本地用户还是域的一部分。有没有办法为当前用户实现相同的目标?

Windows XP 或更高版本的代码采用 C 语言编写。

谢谢。

I am using Win32_NetworkLoginProfile or Win32_Account to get a list of the users for a system. Call to these objects return a lot of users, some local and some belonging to a domain (if the system is part of a domain).

Is there a way to obtain the current user name using WMI?
If yes, how?

furthermore, using Win32_Account I can check whether the username I am listing is either local or part of a domain. Is there a way to achieve the same for the current user?

The code is in C for Windows XP or newer.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦晓ヶ微光ヅ倾城 2024-09-17 19:39:01

有没有办法使用WMI获取当前用户名?

使用 Win32_ComputerSystem.UserName 属性。它返回用户名和域名,即 Domain\User。如果您只需要用户名,只需从基于 \ 的字符串中提取它即可。

此外,使用 Win32_Account 我可以检查我列出的用户名是本地用户还是域的一部分。有没有办法为当前用户实现相同的效果?

那么,您可以执行以下操作:

  • Win32_ComputerSystem.UserName 值除以 \ 字符,以分别获取域名和用户名。

  • 获取指定域名和用户名对应的Win32_Account对象。这些是 Win32_Account 类的关键属性,因此不要运行通用 SELECT 查询,而是使用 IWbemServices::GetObject 通过路径检索特定实例:

    Win32_Account.Domain="<域>",Name="<用户名>"
    
  • 检查LocalAccount

Is there a way to obtain the current user name using WMI?

Use the Win32_ComputerSystem.UserName property. It returns the user name along with the domain name, that is, Domain\User. If you want the user name only, simply extract it from this string based on \.

furthermore, using Win32_Account I can check whether the username I am listing is either local or part of a domain. Is there a way to achieve the same for the current user?

Well, you can do something like this:

  • Split the Win32_ComputerSystem.UserName value by the \ character to get the domain name and the user name separately.

  • Obtain the Win32_Account object corresponding to the specified domain and user name. These are the key properties of the Win32_Account class, so instead of running generic SELECT query, use IWbemServices::GetObject to retrieve a specific instance by its path:

    Win32_Account.Domain="<domain>",Name="<username>"
    
  • Check the LocalAccount property of the obtained Win32_Account object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文