如何让Windows用户帐户类型?

问题描述:

我知道ManagementObjectSearcher和ManagementObjectCollection将是有益的获得Windows用户帐户的详细信息。有没有返回用户帐户类型(例如:管理员,标准用户,客人)任何具体的财产?如何让Windows用户帐户类型?

+0

具有u看到了这一点https://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity%28v=vs.110%29.aspx? – Alex

+0

是的。我认为我们只能通过Windows标识获取当前用户的账户类型。我需要所有用户的帐户类型。我不知道我是否完全理解Windows身份。我们可以使用它来获取所有用户的帐户类型吗? – Unknown

试试这个

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<ManagementObject>().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 users) 
     { 
      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(); 
    } 
} 
} 

的解决方案是从这里How can I get a list Local Windows Users (Only the Users that appear in the windows Logon Screen)

注:框架4.5或以上

This link helped to get type of windows accounts。该NetUserEnum函数检索服务器或本地计算机上的所有用户帐户信息。 usri1_priv提供分配给USER_INFO_1结构(管理员,旅客,StandardUser)的usri1_name构件特权的水平。