使用C#獲得系統信息
2024-07-21 02:24:44
供稿:網友
系統信息無外乎系統軟硬件信息,需要檢測的信息也是這些信息。.net的類庫為我們提供了獲得系統消息所需的一些函數,為我們的程序設計帶來了不少的便利。
下面的部分將說明這些類庫中最基本的三個類庫的使用。
systeminformation類
在這些類庫中,最基本的類庫是systeminformation類,包含在system.windows.forms名字空間中。該類庫可以幫助我們獲得有關系統的基本信息。這個類中只包含了幾個從system.object類繼承的公共方法,沒有提供其他的方法。系統的信息可以通過這個類的公共靜態成員獲得,我們可以根據需要獲得的信息選取合適的成員。下面我們以一個例子說明如何使用這些成員:
//systeminformation類位于system.windows.forms名字空間中,使用它之前需要先引入該名字空間;
using system.windows.forms;
//使用systeminformation的靜態成員獲得系統信息并顯示出來;
class class1
{
static void main(string[] args)
{
console.writeline("計算機名:_"+system.windows.forms.systeminformation.computername.tostring());
console.writeline("啟動方式:_"+system.windows.forms.systeminformation.bootmode.tostring());
console.writeline("域名:
_"+system.windows.forms.systeminformation.userdomainname.tostring());
}
}
上面的代碼只使用了systeminformation類的三個靜態成員,其他成員的屬性及其能提供的信息可以參考msdn。上面代碼的執行結果如下圖所示:
environment 類
第二種方法是通過environment 類,該類提供了有關當前環境和平臺的信息以及操作它們的方法。
environment 類除了提供了一些靜態成員外,還提供了一些靜態方法。我們還是通過一個例子說明這些方法和成員的使用:
class class1
{
static void main(string[] args)
{
console.writeline("系統登錄時間:"+environment.tickcount/1000/60+"分鐘。");
console.writeline("用戶系統的當前目錄:"+environment.currentdirectory);
console.writeline("用戶系統使用的邏輯盤盤符:"+environment.getlogicaldrives());
console.writeline("用戶系統的系統路徑:_"+environment.getfolderpath(environment.specialfolder.system));
console.readline();
}
}
和前一個類一樣,我們也只使用了environment類的幾個成員和方法,其他方法和成員以及更多的信息可以參考msdn,上面代碼的執行結果如下:
registrykey 類
第三種方式是通過注冊表查詢系統信息,這是最傳統的方法,也是功能最強大的方法和最復雜的方法。.net中注冊表封裝在registrykey 類 中,位于microsoft.win32命名空間中。
這個類和前兩個類不同,它的公共屬性我們能利用的機會很少,我們為了獲得系統信息主要是使用它的opensubkey 方法,然而為了使用這個方法,我們必須對注冊表有相當的了解才行,這也正是使用這個類獲得系統信息的復雜之處。如果你對注冊表很熟悉,將能獲得十分豐富的系統信息。
我們還是通過一個例子說明registrykey類的使用,以求拋磚引玉:
class class1
{
static void main(string[] args)
{
registrykey rkey = registry.localmachine;
rkey = rkey.opensubkey("hardware//description//system//centralprocessor//0");
console.writeline("處理器信息:"+rkey.getvalue("processornamestring"));
rkey=registry.localmachine;
rkey = rkey.opensubkey("software//microsoft//windows _nt//currentversion//networkcards//1");
console.writeline("網卡信息:"+(string)rkey.getvalue("description"));
console.readline();
}
}
上面的例子僅僅顯示了處理器信息和網卡信息,如果你仔細查找前兩個類的成員信息,可以發現希望從前兩個類獲取硬件信息是不可能的,要獲取硬件信息還得借助注冊表或是wmi(視窗系統管理方法),不過要使用它們,你必須先對它們有個大致的了解。上面的代碼結果如下:
以上三種方法僅是起拋磚引玉的作用,希望獲得更多系統信息還得自己花時間實現;除了這三種方法,還可以通過其他方法獲得系統信息,例如通過wmi。