当前位置:  开发笔记 > IOS > 正文

在.NET应用程序中确定计算机名称的最佳方法是什么?

如何解决《在.NET应用程序中确定计算机名称的最佳方法是什么?》经验,为你挑选了2个好方法。

我需要获取运行我的.NET应用程序的机器的名称.做这个的最好方式是什么?



1> Billy Jo..:

System.Environment.MachineName



2> Ray Hayes..:

虽然其他人已经说过System.Environment.MachineName会返回机器的名称,但要注意......

该属性仅返回NetBIOS名称(并且仅当您的应用程序具有EnvironmentPermissionAccess.Read权限时).您的机器名称可能超过以下定义的长度:

MAX_COMPUTERNAME_LENGTH  

在这些情况下,System.Environment.MachineName不会返回正确的名称!

另请注意,您的计算机可以使用多个名称,在Win32中有一个方法GetComputerNameEx,它能够获取与这些不同名称类型相匹配的名称:

ComputerNameDnsDomain

ComputerNameDnsFullyQualified

ComputerNameDnsHostname

ComputerNameNetBIOS

ComputerNamePhysicalDnsDomain

ComputerNamePhysicalDnsFullyQualified

ComputerNamePhysicalDnsHostname

ComputerNamePhysicalNetBIOS

如果您需要此信息,则可能需要通过p/invoke转到Win32,例如:

class Class1
{
    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(260);
        uint size = 260;
        success = GetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameDnsDomain,
                                    name, ref size);
        Console.WriteLine(name.ToString());
    }
}

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有