InBlock.gif using System;
InBlock.gif using System.Management;    
InBlock.gif namespace SovSafe
InBlock.gif{
InBlock.gif         class Service_WMI
InBlock.gif        {
InBlock.gif                 private ManagementBaseObject iObj = null;
InBlock.gif                 private ManagementBaseObject oObj = null;
InBlock.gif                 private ManagementClass mc = new ManagementClass( "Win32_Service");
InBlock.gif                 private readonly ManagementObjectCollection moc;    
InBlock.gif                 public Service_WMI()
InBlock.gif                {
InBlock.gif                        moc = mc.GetInstances();                        
InBlock.gif                }    
InBlock.gif                 ///     <summary>        
InBlock.gif                 ///     查询服务模式        
InBlock.gif                 ///     </summary>        
InBlock.gif                 ///     <param     name="serviceName">要查询的服务,为null     表示返回所有已禁用服务</param>        
InBlock.gif                 public string GetDisabled( string serviceName)
InBlock.gif                {
InBlock.gif                         string s = "";
InBlock.gif                         foreach (ManagementObject mo in moc)
InBlock.gif                        {    
InBlock.gif                                 if (serviceName != null)
InBlock.gif                                { //服务如果不为null        
InBlock.gif                                         if ((( string)mo[ "Name"]).ToUpper() == serviceName.ToUpper())
InBlock.gif                                        {
InBlock.gif                                                 return ( string)mo[ "StartMode"];
InBlock.gif                                        }
InBlock.gif                                }    
InBlock.gif                                 if (( string)mo[ "StartMode"] == "Disabled")
InBlock.gif                                {
InBlock.gif                                        s += mo[ "Name"].ToString() + "\r\n";    
InBlock.gif                                }
InBlock.gif                        }
InBlock.gif                         return s;
InBlock.gif                }    
InBlock.gif
InBlock.gif                 ///     <summary>        
InBlock.gif                 ///     设置模式        
InBlock.gif                 ///     </summary>        
InBlock.gif                 ///     <param     name="ServiceName">服务名</param>        
InBlock.gif                 ///     <param     name="startMode">模式,比如:Boot | System | Automatic | Manual | Disabled</param>        
InBlock.gif                 ///     <returns>操作完成     True,否则     False</returns>        
InBlock.gif                 public bool ChangeModeTo( string serviceName, string startMode)
InBlock.gif                {
InBlock.gif                         foreach (ManagementObject mo in moc)
InBlock.gif                        {
InBlock.gif                                 //服务名存在        
InBlock.gif                                 if ((( string)mo[ "Name"]).ToUpper() == serviceName.ToUpper())
InBlock.gif                                {
InBlock.gif                                         //     如果服务已经是指定模式则返回        
InBlock.gif                                         if (( string)mo[ "StartMode"] == startMode) return false;    
InBlock.gif                                         //     设置服务模式        
InBlock.gif                                        iObj = mo.GetMethodParameters( "ChangeStartMode");
InBlock.gif                                        iObj[ "StartMode"] = startMode;
InBlock.gif                                        oObj = mo.InvokeMethod( "ChangeStartMode", iObj, null);
InBlock.gif                                         return true;
InBlock.gif                                }
InBlock.gif                        }
InBlock.gif                         return false;
InBlock.gif                }    
InBlock.gif                 /// <summary>
InBlock.gif                 /// 停止服务
InBlock.gif                 /// </summary>
InBlock.gif                 /// <param name="serviceName">服务名</param>
InBlock.gif                 /// <returns>操作完成     True,否则     False</returns>
InBlock.gif                 public bool StopService( string serviceName)
InBlock.gif                {
InBlock.gif                         foreach (ManagementObject mo in moc)
InBlock.gif                        {
InBlock.gif                                 if ((( string)mo[ "Name"]).ToUpper() == serviceName.ToUpper())
InBlock.gif                                {
InBlock.gif                                         if (( bool)mo[ "AcceptStop"])
InBlock.gif                                        {
InBlock.gif                                                mo.InvokeMethod( "StopService", null);
InBlock.gif                                                 return true;
InBlock.gif                                        }
InBlock.gif                                }
InBlock.gif                        }
InBlock.gif                         return false;
InBlock.gif                }
InBlock.gif                 /// <summary>
InBlock.gif                 /// 启动服务
InBlock.gif                 /// </summary>
InBlock.gif                 /// <param name="serviceName">服务名</param>
InBlock.gif                 /// <returns>操作完成     True,否则     False</returns>
InBlock.gif                 public bool StartService( string serviceName)
InBlock.gif                {
InBlock.gif                         foreach (ManagementObject mo in moc)
InBlock.gif                        {
InBlock.gif                                 if ((( string)mo[ "Name"]).ToUpper() == serviceName.ToUpper())
InBlock.gif                                {
InBlock.gif                                         if (( string)mo[ "State"] == "Stopped")
InBlock.gif                                        {
InBlock.gif                                                mo.InvokeMethod( "StartService", null);
InBlock.gif                                                 return true;
InBlock.gif                                        }
InBlock.gif                                         if (( string)mo[ "State"] == "Paused")
InBlock.gif                                        {
InBlock.gif                                                mo.InvokeMethod( "ResumeService", null);
InBlock.gif                                                 return true;
InBlock.gif                                        }
InBlock.gif                                }
InBlock.gif                        }
InBlock.gif                         return false;
InBlock.gif                }    
InBlock.gif                
InBlock.gif        }
InBlock.gif}    
InBlock.gif                 /* 单步的方法
InBlock.gif                    ManagementPath path=new ManagementPath();    
InBlock.gif                    path.Server=System.Environment.MachineName;    
InBlock.gif                    [url=mailto:path.NamespacePath=@%22root\CIMV2]path.NamespacePath=@"root\CIMV2[/url]";    
InBlock.gif                    path.RelativePath="Win32_service.Name='"+DropDownList1.SelectedItem.Text.ToString()+"'";    
InBlock.gif                    ManagementObject service=new ManagementObject(path);    
InBlock.gif                    ManagementBaseObject temp= service.InvokeMethod(status,null,null);                
InBlock.gif                 */