gpt4 book ai didi

c# - 获取 Windows 机器上的用户列表?

转载 作者:行者123 更新时间:2023-11-30 17:29:01 25 4
gpt4 key购买 nike

我试图返回,或者在这个例子中打印出在 Windows 机器上创建的每个用户,我并不真正关心像“defaultuser0”这样的 Windows 用户,但是如果有人能告诉我我是怎么做的也可以排除它们,那就太好了,但回到主要问题。

我在下面有这段代码,它在一定程度上有效。我收到的输出是这样的。

\PC_NAME\root\cimv2:Win32_UserAccount.Domain="PC_NAME",Name="admin" \PC_NAME\root\cimv2:Win32_UserAccount.Domain="PC_NAME",Name="Administrator" \PC_NAME\root\cimv2:Win32_UserAccount.Domain="PC_NAME",Name="DefaultAccount" \PC_NAME\root\cimv2:Win32_UserAccount.Domain="PC_NAME",Name="defaultuser0" \PC_NAME\root\cimv2:Win32_UserAccount.Domain="PC_NAME",Name="Guest" \PC_NAME\root\cimv2:Win32_UserAccount.Domain="HEAVEN",Name="WDAGUtilityAccount"

现在我明白这是我的代码的自然行为。有没有一种方法可以获得实际的用户名,而不包括域和所有其他目录代码?

这是我正在使用的代码。

var searcher = new ManagementObjectSearcher(new SelectQuery("Win32_UserAccount"));

foreach (var managementBaseObject in searcher.Get())
{
Console.WriteLine(((ManagementObject) managementBaseObject).ToString());
}

最佳答案

您可以指定只需要集合中的所有 ManagementObject 实例,而不是让编译器选择基类型 ManagementBaseObject

foreach (ManagementObject instance in searcher.Get())

这样你就不需要再次显式转换。

要访问此类 ManagementObject 的任何属性,请使用 [string] 访问符号。该字符串必须是属性名称,在您的情况下它将是 Name

Console.WriteLine("Username: {0}", instance["Name"]);

完整代码为:

var searcher = new ManagementObjectSearcher(new SelectQuery("Win32_UserAccount"));

foreach (ManagementObject instance in searcher.Get())
{
var strUsername = instance["Name"];
Console.WriteLine("Username: {0}", strUsername);
}

关于c# - 获取 Windows 机器上的用户列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51836057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com