使用如下代码重启本地计算机,
在我的机器上运行正常,在同事计算机和测试机上说“没有保留特权”。
都是在管理员帐号下运行。郁闷不已,请达人执教 ~ public static void RebootLocalhost()
  {
   System.Management.ManagementScope ms = new
    System.Management.ManagementScope("\\\\LocalHost\\root\\cimv2");
   ms.Options.EnablePrivileges = true;   System.Management.ObjectQuery oq = new
    System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem");
 
   ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq);
   ManagementObjectCollection queryCollection1 = query1.Get();
 
   foreach( ManagementObject mo in queryCollection1 )
   {
    string[] ss = {"2","4"};
    mo.InvokeMethod("Win32Shutdown",ss);
   }
  }

解决方案 »

  1.   

    private void reboot(string _strIP,string _strUsername,string _strPassword)
    {
    string m_strIP = _strIP;
    string m_strUsername = _strUsername;
    string m_strPassword = _strPassword; //定义连接远程计算机的一些选项 
    ConnectionOptions options = new ConnectionOptions ( ) ; 
    options.Username =m_strUsername; 
    options.Password = m_strPassword ; 
    ManagementScope scope = new ManagementScope( "\\\\" + m_strIP + "\\root\\cimv2", options ) ; 
    try 

    //用给定管理者用户名和口令连接远程的计算机 
    scope.Connect ( ) ; 
    System.Management.ObjectQuery oq = new System.Management.ObjectQuery ( "SELECT * FROM Win32_OperatingSystem" ) ; 
    ManagementObjectSearcher query1 = new ManagementObjectSearcher ( scope , oq ) ; 
    //得到WMI控制 
    ManagementObjectCollection queryCollection1 = query1.Get ( ) ; 
    foreach ( ManagementObject mo in queryCollection1 ) 

    string [ ] ss= { "" } ; 
    //重启远程计算机 
    mo.InvokeMethod ( "Reboot" , ss ) ; 


    //报错 
    catch ( Exception ee ) 

    MessageBox.Show ( "连接" + m_strIP + "出错,出错信息为:" + ee.Message ) ; 

    }
      

  2.   

    to cxyPioneer(sunny) 
    重启远程计算机已经解决过 
    现在需要的是重启本地计算机 你的代码不能重启本地计算机 
      

  3.   

    没人帮忙 >"< 世风日下 人心不古 T_T