如何在.NET 2.0中更改Windows 2000计算机名?

时间:2010-02-24 23:12:42

标签: c# .net .net-2.0 hostname computer-name

我正在尝试使用.NET 2.0在Windows 2000上更改计算机的名称(主机名)。计算机未加入域。

Windows XP及更高版本提供了WMI方法Win32_ComputerSystem.Rename,但这在Windows 2000(reference here)中不可用。

如果我需要,我不反对调用外部程序,但我似乎也找不到适用于Windows 2000的程序。在Google上搜索似乎没有任何明显的结果。

提前致谢。

2 个答案:

答案 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.Startnetsh命令结合使用,如here所述。

答案 1 :(得分:0)

在该链接下的C中有一个例子。你可以说明那个