如果叫你實現遠端啟動別人的計算機,你首先想到的可能是先做乙個在遠端計算機上面執行客戶端程式,然後在本地計算機上面再做乙個
伺服器端程式,通過這二個程式直接的通訊實現重啟遠端計算機。這當然是乙個方法。但這未免有點麻煩。如果現在只告訴你遠端計算機的管理者的登陸帳號,而並不允許你在遠端的計算機上面執行乙個所謂的客戶端程式,讓你通過程式來完成重啟遠端計算機。不知道你是否感覺有些困難了。其實按照上面的這些條件實現重啟遠端計算機,利用c#可以比較方便的完成。下面就來介紹一下具體的實現方法。
一. c#重啟遠端計算機的一些理論知識:
c#實現啟動遠端計算機的原理是"視窗管理規範"。就是所謂的"wmi"(windows management instrumentation)。windows 管理規範 (wmi) 支援通過 internet 管理系統的結構。通過提供管理環境的一致觀察,wmi 為使用者提供通用訪問管理資訊。該管理的一致性使您能夠管理整個系統,而不只是元件。從 microsoft msdn上,您可以獲得有關 wmi 軟體開發工具包 (sdk) 的詳細資訊。
wmi(windows 管理規範)支援有限的安全格式,允許使用者在本地計算機或遠端計算機上連線 wmi 之前要驗證每個使用者。這種安全性是作業系統
已有的安全頂端的另一層。wmi 不覆蓋或破壞由作業系統
提供的任何現有的安全性。在預設情況下,管理員組的所有成員都可以完全控制它管理的計算機上的 wmi 服務。其他所有使用者在其本地計算機上只有讀取/寫入/執行的許可權。可以通過向被管理的計算機上的管理員組新增使用者,或者在 wmi 中授權使用者或組並設定許可權級別來更改許可權。訪問基於 wmi 命名空間。在一般情況下,指令碼程式的預設命名空間是"root/cimv2"。
在wmi中有著許多足以令我們感覺驚奇的功能。重啟遠端計算機只是乙個很小的功能。在程式中使用wmi可以編寫出許多遠端管理型別的應用
程式。由於在.net framework sdk中提供了可以直接操作wmi的命名空間,所以c#就可以利用在這些命名空間中定義了的類來充分使用wmi控制給我們帶來的各種方便。
二.程式設計和執行的環境設定:
(1).視窗2000伺服器
版 (2). .net framework sdk beta 2
(3).遠端計算機的管理者帳號
以上這些不僅是本地計算機配置,還是遠端計算機的配置。
三.實現重啟遠端計算機所使用到在.net framework sdk beta 2用以操作wmi命名空間和類:
在.net framework sdk beta 2中用來操作wmi的命名空間主要是"system.management"。要實現重啟遠端計算機所使用到的類主要有六個:
. "connectionoptions"類主要定義遠端計算機的管理員帳號;
. "managementscope"主要是以給定的管理員帳號連線給定計算機名或者ip位址的計算機;
. "objectquery"類功能是定義對遠端計算機要實現那些地遠端操作;
. "managementobjectsearcher"類從已經完成遠端連線的計算機中,得到有那些wmi操作;
. "managementobjectcollection"類存放得到wmi操作;
. "managementobject"類呼叫遠端計算機可進行wmi操作。
(1).連線遠端計算機:
按照下列語句可以實現連線遠端計算機:
connectionoptions options = new connectionoptions ( ) ;
options.username ="管理者帳號使用者名稱";
options.password
= "管理者帳號口令" ;
managementscope scope = new managementscope( "" + "遠端計算機名或ip位址" + "//root//cimv2", options ) ;
//用給定管理者使用者名稱和口令連線遠端的計算機
scope.connect ( ) ;
(2).得到在遠端計算機中可以進行wmi控制:
system.management.objectquery oq = new system.management.objectquery ( "select * from win32_operatingsystem" ) ;
managementobjectsearcher query1 = new managementobjectsearcher ( scope , oq ) ;
//得到wmi控制
managementobjectcollection querycollection1 = query1.get ( ) ;
(3).呼叫wmi控制,實現重啟遠端計算機:
foreach ( managementobject mo in querycollection1 )
; //重啟遠端計算機
mo.invokemethod ( "reboot" , ss ) ;
}
安裝SQL server 提示重新啟動計算機失敗
解決方法一 1 同時按下win7旗艦版電腦鍵盤上的win r快捷鍵開啟電腦的執行視窗,在開啟的執行視窗中,輸入regedit並單擊回車,這樣就可以開啟登錄檔編輯器視窗了 2 在開啟的登錄檔編輯器視窗中,點選展開左側選單中的hkey local machine software microsoft m...
VC實現程式重新啟動
重啟程式 如下 process information info startupinfo startup char szpath 128 char szcmdline bool bsucc createprocess szpath,szcmdline,null,null,false,normal p...
重新理解計算機(一)
從開始學的c語言,到各種高階語言,電路。但從未真正理解計算機最原本的實現方式。最近閱讀編碼的奧秘,收穫很多,從最簡單的二進位制,繼電器開始,簡單明瞭。特此做成筆記,以後參考。一 邏輯閘電路 繼電器 輸入電流激發電磁鐵,電磁鐵吸引一根有彈性的金屬條作為開關從而輸出電流。簡單裝置如下 繼電器是乙個開關,...