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 '

 

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

ExpandedBlockStart.gif 代码
///   <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();
        }

 

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

ExpandedBlockStart.gif 代码
  ///   <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();
        }

 

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

ExpandedBlockStart.gif 代码
  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();
        }

 

 

转载于:https://www.cnblogs.com/limingyang/archive/2010/01/01/1637404.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值