2010-10-25 98 views
0

我編寫了以下代碼來更改與Windows服務關聯的用戶帳戶和密碼。如何修改此代碼以便能夠在遠程系統上執行相同的操作?修改代碼以在遠程服務器上執行操作

static void Main(string[] args) 
     { 
      string serviceName = "DummyService"; 
      string username = ".\\Service_Test2"; 
      string password = "Password1"; 

      ServiceController sc = new ServiceController(serviceName); 

      Console.WriteLine(sc.Status.ToString()); 

      if (sc.Status == ServiceControllerStatus.Running) 
      { 
       sc.Stop(); 
      } 
      Thread.Sleep(2000); 
      sc.Refresh(); 
      Console.WriteLine(sc.Status.ToString()); 

      string objPath = string.Format("Win32_Service.Name='{0}'", serviceName); 
      using (ManagementObject service = new ManagementObject(new ManagementPath(objPath))) 
      { 
       object[] wmiParams = new object[11]; 
       wmiParams[6] = username; 
       wmiParams[7] = password; 
       service.InvokeMethod("Change", wmiParams); 
      } 

      Thread.Sleep(2000); 

      Console.WriteLine(sc.Status.ToString()); 

      if (sc.Status == ServiceControllerStatus.Stopped) 
      { 
       sc.Start(); 
      } 
      Thread.Sleep(2000); 
      sc.Refresh(); 
      Console.WriteLine(sc.Status.ToString()); 

     } 

回答

2
  1. 使用ServiceController constructor overload,讓目標機器名被指定

  2. 修改WMI對象路徑包括目標服務器。

    new ManagementPath(
        "\\\\ComputerName\\root" + 
        "\\cimv2:Win32_Service.Name='{0}'"); 
    
  3. 確保您的用戶名/密碼有目標機器上足夠的權限,如果不改變這些。

+0

得到第1步。謝謝。你能否詳細說明或給出步驟2的鏈接? – xbonez 2010-10-25 17:01:02

+0

@xbonez - 當您發佈此評論時,編輯工作正在進行中......現在看到 – 2010-10-25 17:03:36

+0

謝謝。我會試試 – xbonez 2010-10-25 17:06:39

相關問題