Как можно изменить имя компьютера с Windows 2000 в .NET 2.0?
-
22-09-2019 - |
Вопрос
Я пытаюсь изменить имя компьютера (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.Вы могли бы зафиксировать это