使用WMI获取当前用户名

时间:2010-07-21 19:02:40

标签: c wmi username

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

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

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

代码在C中用于Windows XP或更高版本。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

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

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

  

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

嗯,你可以这样做:

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

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

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