1. 程式人生 > >c#獲取計算機全名的方法

c#獲取計算機全名的方法

在大多數情況下windows的計算機名和計算機全名是相同的,但是在計算機加入域或者手動設定主DNS字尾之後就會產生不同,正在做的專案需要顯示出系統的系統資訊,內容和計算機屬性的內容基本相同,其他內容均由WMI查詢得出,但是並沒有找到記錄計算機全名的WMI類的屬性,要是有人知道希望可以回覆一下。

最終的解決辦法為使用Windows API。

COMPUTER_NAME_FORMAT決定獲得的計算機名稱型別,ComputerNamePhysicalDnsFullyQualified為完整的計算機全名。

    class Class
    {
        enum COMPUTER_NAME_FORMAT
        {
            ComputerNameNetBIOS,
            ComputerNameDnsHostname,
            ComputerNameDnsDomain,
            ComputerNameDnsFullyQualified,
            ComputerNamePhysicalNetBIOS,
            ComputerNamePhysicalDnsHostname,
            ComputerNamePhysicalDnsDomain,
            ComputerNamePhysicalDnsFullyQualified
        }

        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern bool GetComputerNameEx(COMPUTER_NAME_FORMAT NameType,
            out StringBuilder lpBuffer, ref uint lpnSize);

        [STAThread]
        static void Main(string[] args)
        {
            bool success;
            StringBuilder name = new StringBuilder(100);
            uint size = 100;
            success = GetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsFullyQualified, name, ref size);
            Console.WriteLine(name.ToString());
        }
    }