【问题标题】:Environment.MachineName is cropped to 15 characters [duplicate]Environment.MachineName 被裁剪为 15 个字符 [重复]
【发布时间】:2017-06-24 14:36:12
【问题描述】:

.NET System.Environment.MachineName 中有一个属性,它读取由于与 Windows 98 兼容而裁剪到 15 个字符的计算机名称。

如何获得完整(未裁剪)的名称?

【问题讨论】:

  • This question 尤其是 alternate 答案探索了其他一些选项。
  • 你试过Environment.GetEnvironmentVariable("COMPUTERNAME")吗?

标签: c#


【解决方案1】:

我建议使用 interop

using System.Runtime.InteropServices;
...

[DllImport("KERNEL32.dll", CharSet = CharSet.Auto, BestFitMapping = false)]
private extern static int GetComputerName(
  [Out]StringBuilder nameBuffer, 
  ref int bufferSize);
...

int size = 0; // do not try to return any name, but its actual size only

// What's actual size of the machine name?
GetComputerName(null, ref size);

// Obtaining the machine name 
StringBuilder buffer = new StringBuilder(size);
GetComputerName(buffer, ref size);

string name = buffer.ToString();

【讨论】:

    【解决方案2】:

    您也可以使用 WMI 来获取系统的名称

    using System.Management;
    
    try
            {
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2",
                    "SELECT Name FROM Win32_ComputerSystem");
    
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Win32_ComputerSystem instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Name: {0}", queryObj["Name"]);
                }
            }
            catch (ManagementException e)
            {
                // exception handling
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2016-05-05
      • 2017-03-22
      • 2021-05-05
      • 1970-01-01
      相关资源
      最近更新 更多