1

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

Windows XP 及更高版本提供 WMI 方法Win32_ComputerSystem.Rename,但在 Windows 2000 中不可用(参考此处)。

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

提前致谢。

4

2 回答 2

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

于 2010-02-24T23:23:41.400 回答
0

该链接下有一个 C 中的示例。你可以pinvoke那个

于 2010-02-24T23:23:20.463 回答