我正在尝试使用.NET 2.0在Windows 2000上更改计算机的名称(主机名)。计算机未加入域。
Windows XP及更高版本提供了WMI方法Win32_ComputerSystem.Rename
,但这在Windows 2000(reference here)中不可用。
如果我需要,我不反对调用外部程序,但我似乎也找不到适用于Windows 2000的程序。在Google上搜索似乎没有任何明显的结果。
提前致谢。
答案 0 :(得分:3)
我认为Windows API可能对Windows 2000有所帮助:使用SetComputerNameEx
:
BOOL WINAPI SetComputerNameEx(
__in COMPUTER_NAME_FORMAT NameType,
__in LPCTSTR lpBuffer
);
此示例基于pinvoke.net上的示例:
public class RenameComputer
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern bool SetComputerNameEx(COMPUTER_NAME_FORMAT NameType, string lpBuffer);
enum COMPUTER_NAME_FORMAT
{
ComputerNameNetBIOS,
ComputerNameDnsHostname,
ComputerNameDnsDomain,
ComputerNameDnsFullyQualified,
ComputerNamePhysicalNetBIOS,
ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain,
ComputerNamePhysicalDnsFullyQualified,
}
//ComputerNamePhysicalDnsHostname used to rename the computer name and netbios name before domain join
public static bool Rename(string name)
{
bool result = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsHostname, name);
if (!result)
throw new Win32Exception();
return result;
}
}
除了p调用WinAPI之外,您还可以将Process.Start
与netsh
命令结合使用,如here所述。
答案 1 :(得分:0)
在该链接下的C中有一个例子。你可以说明那个