傳統做法需在遠端執行客戶端程式。若只知道遠端管理員帳號、不允許部署客戶端,利用 C# 配合 WMI 仍可輕鬆完成遠端重啟。
Windows Management Instrumentation (WMI) 支援透過網際網路管理系統,提供一致管理視圖。安全性建立在作業系統既有安全之上,預設 Administrators 群組擁有完整控制權。存取以命名空間為基礎,預設 root\cimv2。
.NET Framework SDK 提供 System.Management 命名空間直接操作 WMI。
| 類別 | 用途 |
|---|---|
| ConnectionOptions | 定義遠端管理員帳號/密碼 |
| ManagementScope | 以指定帳號連接目標電腦 (名稱/IP) |
| ObjectQuery | 定義要執行的 WMI 查詢操作 |
| ManagementObjectSearcher | 從已連線電腦取得可用 WMI 操作 |
| ManagementObjectCollection | 儲存查詢結果集合 |
| ManagementObject | 呼叫遠端 WMI 方法 (如 Reboot) |
ConnectionOptions options = new ConnectionOptions();
options.Username = "管理者帳號";
options.Password = "管理者密碼";
ManagementScope scope = new ManagementScope("\\\\" + "遠端電腦名或IP" + "\\root\\cimv2", options);
scope.Connect();
ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
ManagementObjectSearcher query1 = new ManagementObjectSearcher(scope, oq);
ManagementObjectCollection queryCollection1 = query1.Get();
foreach (ManagementObject mo in queryCollection1)
{
string[] args = { "" };
mo.InvokeMethod("Reboot", args);
}