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

问题描述 投票:0回答:1

我正在尝试在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,但没有设置设备的名称。请参见下面的图像。

PowerShell ComputerName

System Name

编辑它已更改注册表。

RegEdit

c# .net-core unmanaged
1个回答
1
投票

如果我正确阅读了documentation,则应该:

  • 正在使用ComputerNamePhysicalDnsHostname而不是ComputerNamePhysicalNetBIOS
  • 并且您不应该在SetComputerName之前致电SetComputerNameEx
© www.soinside.com 2019 - 2024. All rights reserved.