zoukankan      html  css  js  c++  java
  • WMI.NET枚举计算机用户和组

        最近在学习WMI.NET,主要的任务需求是写一个IIS WMI Provider来实现对IIS自动的监控,管理。所以在网上搜寻了很多关于WMI.NET的信息,

    今天我们主要来展示一下使用WMI.NET来枚举计算机用户和组。

        涉及到计算机用户和用户组的WMI Class主要有以下四类:

        1. Win32_Account

        2. Win32_UserAccount

          3. Win32_Group

        4. Win32_GroupUser

        为了获取所有用户,你需要执行此查询语句:

    select * from Win32_Account where Domain='YOURDOMAIN'

       为了获取所有的用户组,你需要执行此查询语句:

    Select * from Win32_GroupUser where Domain='YOURDOMAIN'

       获取所有计算机用户代码如下:

    代码
    /// <summary>
            
    /// 获取所有用户
            
    /// </summary>
            public static void GetUsers()
            {
                SelectQuery sQuery 
    = new SelectQuery("Win32_UserAccount""Domain='LMY-PC'");
                
    try
                {
                    ManagementObjectSearcher mSearcher 
    = new ManagementObjectSearcher(sQuery);

                    Console.WriteLine(
    "User Accounts");
                    Console.WriteLine(
    "");

                    
    foreach (ManagementObject mObject in mSearcher.Get())
                    {
                        Console.WriteLine(mObject[
    "Name"]);
                    }
                }
                
    catch(Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                Console.ReadKey();
            }

    获取计算机的所有用户组的代码如下:

    代码
     /// <summary>
            
    /// 获取所有用户组
            
    /// </summary>
            public static void GetGroups()
            {
                SelectQuery sQuery 
    = new SelectQuery("Win32_Group""Domain='LMY-PC'");

                
    try
                {
                    ManagementObjectSearcher mSearcher 
    = new ManagementObjectSearcher(sQuery);

                    Console.WriteLine(
    "User Groups");
                    Console.WriteLine(
    "");

                    
    foreach (ManagementObject mObject in mSearcher.Get())
                    {
                        Console.WriteLine(mObject[
    "Name"]);
                    }
                }
                
    catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                Console.ReadKey();
            }

    获取计算机特定用户组的所有用户的代码如下:

    代码
     public static void GetUsers(String DomainName, string GroupName)
            {
                
    #region Bulid WMI query using SelectQuery
                StringBuilder sBuilder 
    = new StringBuilder("GroupComponent=");
                sBuilder.Append(
    '"');
                sBuilder.Append(
    "Win32_Group.Domain=");
                sBuilder.Append(
    "'");
                sBuilder.Append(DomainName);
                sBuilder.Append(
    "'");
                sBuilder.Append(
    ",Name=");
                sBuilder.Append(
    "'");
                sBuilder.Append(GroupName);
                sBuilder.Append(
    "'");
                sBuilder.Append(
    '"');
                SelectQuery sQuery 
    = new SelectQuery("Win32_GroupUser", sBuilder.ToString());
                
    #endregion

                
    try
                {
                    ManagementObjectSearcher mSearcher 
    = new ManagementObjectSearcher(sQuery);
                    
    foreach (ManagementObject mObject in mSearcher.Get())
                    {
                        ManagementPath path 
    = new ManagementPath(mObject["PartComponent"].ToString());
                        
    if (path.ClassName =="Win32_UserAccount")
                        {
                            
    string[] names = path.RelativePath.Split(',');
                            Console.WriteLine(names[
    1].Substring(names[1].IndexOf("="+ 1).Replace('"'' ').Trim());
                        }
                    }
                }
                
    catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                Console.ReadKey();
            }
  • 相关阅读:
    服务器状态码
    QuerySet中添加Extra进行SQL查询
    django配置一个网站建设
    MySQL数据库查询中的特殊命令
    125. Valid Palindrome
    121. Best Time to Buy and Sell Stock
    117. Populating Next Right Pointers in Each Node II
    98. Validate Binary Search Tree
    91. Decode Ways
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/limingyang/p/1637404.html
Copyright © 2011-2022 走看看