使用WMI获取当前用户名
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
Win32_ComputerSystem.UserName
属性。它返回用户名和域名,即Domain\User
。如果您只需要用户名,只需从基于\
的字符串中提取它即可。那么,您可以执行以下操作:
将
Win32_ComputerSystem.UserName
值除以\
字符,以分别获取域名和用户名。获取指定域名和用户名对应的
Win32_Account
对象。这些是Win32_Account
类的关键属性,因此不要运行通用SELECT
查询,而是使用IWbemServices::GetObject
通过路径检索特定实例:检查
LocalAccount
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\
.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 theWin32_Account
class, so instead of running genericSELECT
query, useIWbemServices::GetObject
to retrieve a specific instance by its path:Check the
LocalAccount
property of the obtainedWin32_Account
object.