[C#]取得目前系統資訊
用C#如何取得目前OS的各項資訊呢?以下簡單列舉一些常用到的功能:
取得可用記憶體量:
/// 取得可用記憶體資訊(MB)
/// </summary>
/// <returns></returns>
public static ulong getMemory()
{
Computer myComputer = new Computer();
//回傳MB
return myComputer.Info.AvailablePhysicalMemory / 1024 / 1024;
}
取得作業系統版本:
/// 取得作業系統版本
/// </summary>
/// <returns></returns>
public static string checkOSVersion()
{
Computer myComputer = new Computer();
string OS_VerStr = string.Format("{0} {1}", myComputer.Info.OSFullName, Environment.OSVersion.ServicePack.ToString());
return OS_VerStr;
}
以上兩個function使用時請記得using Microsoft.VisualBasic.Devices,只要加入Microsoft.VisualBasic.Devices.dll的參考即可,我們再看一下Computer這個class的Info屬性中包含了哪些內容:
除了以上的資訊外,還有這麼多資訊可以獲得,一般這些資訊我們會使用在系統的環境確認,寫好一個小工具,按一下就可以將目前系統的資訊給收集完成,要分析系統資訊時就會比較簡單囉,相關的東西還有很多,下面再補一些寫ASP.NET可能會用到的東西:
取得目前CPU的執行個體,也就是判斷目前執行的CPU是x86還是x64啦:
{
x32 = 0,
x64 = 1,
Unknown = -1
}
public static CPUMode PCCPUMode
{
get
{
// 取得這個執行個體的大小,以位元組為單位。這個屬性的值在 32 位元平台上為 4,而在 64 位元平台上為 8。
if (IntPtr.Size == 8)
{
return CPUMode.x64;
}
else
{
return CPUMode.x32;
}
}
}
目前運行環境下.net framework的版本:
/// 取得.net framework版本
/// </summary>
/// <returns></returns>
public static string checkNetVersion()
{
return Environment.Version.ToString();
}
如果你開發的是ASP.NET的應用程式,可能要限定只能裝在IIS6.0以上的版本,那下面這段程式就可以派上用場囉,可以抓出目前機器的IIS版本,安裝人員如果在裝機時發現環境不對,就不允許安裝,並提示需要裝在IIS6.0以上的版本,這樣可以省掉許多麻煩。
/// IIS版本的列舉
/// </summary>
[Serializable]
public enum WebServerVersion
{
/// <summary>
/// 未知版本
/// </summary>
Unknown,
/// <summary>
/// IIS 4.0
/// </summary>
IIS4,
/// <summary>
/// IIS 5.0,5.1
/// </summary>
IIS5,
/// <summary>
/// IIS 6.0
/// </summary>
IIS6,
/// <summary>
/// IIS 7.0
/// </summary>
IIS7
}
/// <summary>
/// 取得伺服器IIS版本
/// </summary>
/// <param name="DomainName"></param>
/// <returns></returns>
public static WebServerTypes getIISVersion()
{
string tPath = "IIS://LOCALHOST/W3SVC/INFO";
DirectoryEntry tEntry = null;
try
{
tEntry = new DirectoryEntry(tPath);
}
catch
{
return WebServerVersion.Unknown;
}
int tIISVersion = 5;
try
{
tIISVersion = (int)tEntry.Properties["MajorIISVersionNumber"].Value;
}
catch
{
return WebServerVersion.Unknown;
}
switch (tIISVersion)
{
case 6:
return WebServerVersion.IIS6;
case 7:
return WebServerVersion.IIS7;
}
//預設給IIS6
return WebServerVersion.IIS6;
}
客戶端的環境我們很難控制,但我們能做一些簡單的防範,在系統說明書中載明只能支援什麼樣的硬體與作業系統規格,並透過一些工具來檢查環境狀況,減少服務人員的loading,這時候這些微不足道的小功能就可以幫我們很大的忙囉。
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |