【问题标题】:obtain the current username using WMI使用 WMI 获取当前用户名
【发布时间】:2010-07-21 19:02:39
【问题描述】:

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

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

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

Windows XP 或更新版本的代码是 C 语言。

谢谢。

【问题讨论】:

    标签: c wmi


    【解决方案1】:

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

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

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

    好吧,你可以这样做:

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

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

      Win32_Account.Domain="<domain>",Name="<username>"
      
    • 检查获取到的Win32_Account对象的LocalAccount属性。

    【讨论】:

      猜你喜欢
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2013-04-19
      • 2018-10-25
      • 2012-07-20
      相关资源
      最近更新 更多