不更改计算机名称,但更改 $env:ComputerName

Not Changing Computer Name, but changing $env:ComputerName

我正在尝试更改 windows 机器上的 ComputerName。我的结果很奇怪。

我使用的代码是:

public class MachineService
{
      [DllImport("Kernel32.dll")]
      [return: MarshalAs(UnmanagedType.Bool)]
      private static extern bool SetComputerNameA([MarshalAs(UnmanagedType.LPStr)] string computerName);

      [DllImport("Kernel32.dll")]
      [return: MarshalAs(UnmanagedType.Bool)]
      private static extern bool SetComputerName([MarshalAs(UnmanagedType.LPStr)] string computerName);

      [DllImport("Kernel32.dll")]
      [return: MarshalAs(UnmanagedType.Bool)]
      private static extern bool SetComputerNameEx(ComputerNameFormat NameType, [MarshalAs(UnmanagedType.LPStr)] string computerName);


    public static bool ChangeName(string name)
    {
      var envVar = SetComputerName(name);
      var ex = SetComputerNameEx(ComputerNameFormat.ComputerNamePhysicalNetBIOS, name);
      return envVar && ex;
    }
}

它确实设置了环境变量 ComputerName,但没有设置设备的名称。请看下面的图片。

编辑 它已更改注册表。

如果我没看错 documentation 你应该:

  • 使用 ComputerNamePhysicalDnsHostname 而不是 ComputerNamePhysicalNetBIOS
  • 你不应该在 SetComputerNameEx
  • 之前调用 SetComputerName