我正在使用Win32_NetworkLoginProfile或Win32_Account来获取系统用户的列表。对这些对象的调用会返回许多用户,一些是本地的,一些属于一个域(如果系统是域的一部分)。
有没有办法使用WMI获取当前用户名? 如果是,怎么样?
此外,使用Win32_Account我可以检查我列出的用户名是本地还是域的一部分。有没有办法为当前用户实现相同的目标?
代码在C中用于Windows XP或更高版本。
谢谢。
答案 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
属性。