【发布时间】:2020-10-06 06:10:08
【问题描述】:
我正在尝试更改 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。 -
@SamAxe 这就是问题所在。如果您添加答案,我会投票赞成。谢谢!