首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 透過 WMI 實現遠端命令執行

     編輯:關於C語言

概述

利用 System.Management 命名空間中的 WMI (Windows Management Instrumentation) 類別,可在遠端電腦上啟動程序。本文提供一個簡單的 Windows Forms 範例,示範如何連線遠端主機並執行命令列指令。

核心程式碼

private void button1_Click(object sender, System.EventArgs e)
{
    ConnectionOptions opt = new ConnectionOptions();
    opt.Username = UserBox.Text;
    opt.Password = PassBox.Text;

    ManagementScope scope = new ManagementScope("\\\\" + IPbox.Text + "\\root\\cimv2", opt);

    try
    {
        scope.Connect();

        ObjectGetOptions o = new ObjectGetOptions();
        ManagementPath path = new ManagementPath("Win32_Process");
        ManagementClass processClass = new ManagementClass(scope, path, o);

        ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
        inParams["CommandLine"] = CommandBox.Text;

        ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error");
    }
}

private void button2_Click(object sender, System.EventArgs e)
{
    Application.Exit();
}

關鍵類別與流程說明

  1. ConnectionOptions:設定遠端連線認證資訊 (帳號/密碼)。
  2. ManagementScope:定義連線範圍,格式為 \\IP\root\cimv2。
  3. ManagementClass:繫結至 Win32_Process 類別,代表遠端的處理程序管理。
  4. GetMethodParameters("Create"):取得 Create 方法的輸入參數物件。
  5. inParams["CommandLine"]:指定欲執行的命令列字串。
  6. InvokeMethod("Create", inParams, null):呼叫建立程序方法,於遠端啟動指定程式。

注意事項

  • 目標電腦需啟用 WMI 服務並允許遠端連線 (防火牆需開放 RPC/DCOM 埠)。
  • 執行身分需具備遠端電腦的管理員權限。
  • 僅能啟動非互動式程序 (無 GUI 介面),否則程序將在背景執行且不顯示視窗。
  • 錯誤處理建議加強,區分連線失敗、認證錯誤、權限不足等異常。

安全性提醒

此功能具高風險,僅供受信任內部網路管理用途。實際部署應加入加密傳輸、審計日誌與最小權限原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved