Вопрос

Я пытаюсь изменить имя компьютера (host name) в Windows 2000 с помощью .NET 2.0.Компьютер не присоединен к домену.

Windows XP и выше предоставляет метод WMI Win32_ComputerSystem.Rename, но это недоступно в Windows 2000 (ссылка здесь).

Я не прочь просто вызвать внешнюю программу, если мне нужно, но, похоже, я также не могу найти ту, которая работает в Windows 2000.Поиск в Google, похоже, не дал ничего очевидного.

Заранее благодарю.

Это было полезно?

Решение

Я думаю, что 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 команда, как описано здесь.

Другие советы

По этой ссылке есть пример на C.Вы могли бы зафиксировать это

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top