[C#]取得目前系統資訊

[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屬性中包含了哪些內容:

image

除了以上的資訊外,還有這麼多資訊可以獲得,一般這些資訊我們會使用在系統的環境確認,寫好一個小工具,按一下就可以將目前系統的資訊給收集完成,要分析系統資訊時就會比較簡單囉,相關的東西還有很多,下面再補一些寫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堂課》,為培養台灣未來的領袖而努力。