如果没有以管理员身份运行应用程序,更改PC名无法工作

本文关键字:PC 工作 更改 管理员 身份 运行 应用程序 如果没有 | 更新日期: 2023-09-27 18:08:49

我使用下面的代码以编程方式更改PC名,

[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetComputerNameEx(COMPUTER_NAME_FORMAT nameType, [MarshalAs(UnmanagedType.LPTStr)] string lpBuffer);
private enum COMPUTER_NAME_FORMAT : int
{
   ComputerNameNetBIOS,
   ComputerNameDnsHostname,
   ComputerNameDnsDomain,
   ComputerNameDnsFullyQualified,
   ComputerNamePhysicalNetBIOS,
   ComputerNamePhysicalDnsHostname,
   ComputerNamePhysicalDnsDomain,
   ComputerNamePhysicalDnsFullyQualified,
   ComputerNameMax
}  
SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsHostname,"NEWName"); //Call this to change pc name

但是,这仅在应用程序以管理员身份运行时有效。

在不以管理员身份运行应用程序的情况下,是否有其他方法可以使此工作?

我找到了这个话题,但是它对我不起作用。

如果没有以管理员身份运行应用程序,更改PC名无法工作

您需要管理员权限才能运行此函数:

SetComputerNameEx可以设置计算机名(对象的第一个标签)完整DNS名称)或本地计算机的主DNS后缀。它无法在一次调用中设置完全限定的DNS名称。如果本地的计算机是集群中的一个节点,SetComputerNameEx设置NetBIOS或DNS本地计算机的名称,不是集群虚拟服务器的名称。调用SetComputerNameEx函数的进程必须有本地计算机上的管理员权限。编译将_WIN32_WINNT定义为0x0500或以后。有关更多信息,请参见使用Windows头文件。

源(MSDN)

重命名PC需要更高的权限,修改注册表也是如此。这是没有办法的,这是一个很好的理由,安全。