Csharp/C#教程:如何获取列表本地Windows用户(仅显示在Windows登录屏幕中的用户)分享


如何获取列表本地Windows用户(仅显示在Windows登录屏幕中的用户)

如何获取本地Windows用户列表(仅显示在Windows登录屏幕中的用户)

我尝试了很多使用Windows Principle库和WMI Select命令的方法。 我一直得到管理员,访客和其他一些奇怪的帐户(VUSRNEIL-DELL,$ HOMEGROUPUSER,ASPNET ……等)

登录屏幕上不会显示这3个用户帐户。 如何区分这些用户类型?

我在C#中编码

只需在控制台应用程序中添加对System.Management的引用,然后尝试以下代码:

 using System; using System.Management; using System.Linq; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { ManagementObjectSearcher usersSearcher = new ManagementObjectSearcher(@"SELECT * FROM Win32_UserAccount"); ManagementObjectCollection users = usersSearcher.Get(); var localUsers = users.Cast().Where( u => (bool)u["LocalAccount"] == true && (bool)u["Disabled"] == false && (bool)u["Lockout"] == false && int.Parse(u["SIDType"].ToString()) == 1 && u["Name"].ToString() != "HomeGroupUser$"); foreach (ManagementObject user in localUsers) { Console.WriteLine("Account Type: " + user["AccountType"].ToString()); Console.WriteLine("Caption: " + user["Caption"].ToString()); Console.WriteLine("Description: " + user["Description"].ToString()); Console.WriteLine("Disabled: " + user["Disabled"].ToString()); Console.WriteLine("Domain: " + user["Domain"].ToString()); Console.WriteLine("Full Name: " + user["FullName"].ToString()); Console.WriteLine("Local Account: " + user["LocalAccount"].ToString()); Console.WriteLine("Lockout: " + user["Lockout"].ToString()); Console.WriteLine("Name: " + user["Name"].ToString()); Console.WriteLine("Password Changeable: " + user["PasswordChangeable"].ToString()); Console.WriteLine("Password Expires: " + user["PasswordExpires"].ToString()); Console.WriteLine("Password Required: " + user["PasswordRequired"].ToString()); Console.WriteLine("SID: " + user["SID"].ToString()); Console.WriteLine("SID Type: " + user["SIDType"].ToString()); Console.WriteLine("Status: " + user["Status"].ToString()); } Console.ReadKey(); } } } 

如果您使用WMI查询Win32_UserAccount ,则只能显示符合以下条件的项目:

如果您不能使用WMI(或者您不想使用它),那么您必须做更多的工作,基本上您必须使用NetGroupGetUsers函数来枚举所有用户。 有关示例,请参阅CodeProject上的这篇文章 。

如果你想使用一个包装好的解决方案,NuGet有一个“Continuous.Management”包 – 这是一个开源项目: https : //github.com/jarzynam/continuous

这将为您提供所有用户帐户,其域,全名和SID的列表。

上述就是C#学习教程:如何获取列表本地Windows用户(仅显示在Windows登录屏幕中的用户)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 wmic useraccount get domain,name,sid 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1028216.html

(0)
上一篇 2022年1月10日
下一篇 2022年1月10日

精彩推荐