如果没有以管理员身份运行应用程序,更改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
但是,这仅在应用程序以管理员身份运行时有效。
在不以管理员身份运行应用程序的情况下,是否有其他方法可以使此工作?
我找到了这个话题,但是它对我不起作用。
您需要管理员权限才能运行此函数:
源(MSDN)SetComputerNameEx可以设置计算机名(对象的第一个标签)完整DNS名称)或本地计算机的主DNS后缀。它无法在一次调用中设置完全限定的DNS名称。如果本地的计算机是集群中的一个节点,SetComputerNameEx设置NetBIOS或DNS本地计算机的名称,不是集群虚拟服务器的名称。调用SetComputerNameEx函数的进程必须有本地计算机上的管理员权限。编译将_WIN32_WINNT定义为0x0500或以后。有关更多信息,请参见使用Windows头文件。
重命名PC需要更高的权限,修改注册表也是如此。这是没有办法的,这是一个很好的理由,安全。