Проблема с функцией SetComputerName - PullRequest
1 голос
/ 06 сентября 2010

Я использовал следующую строку кода, чтобы изменить имя моего компьютера:

std::string mystr="MY-PC"
bSuccess = SetComputerNameA(mystr.c_str());
if( bSuccess == 0 )
    printf("Unable to change computer name | ERROR %d |", GetLastError());
else
        printf("Name changed successfully");

После выполнения программы появилось сообщение «Имя успешно изменено».Обнаружено, что следующие элементы реестра имеют имя компьютера обновления

HKLM \ SYSTEM \ CurrentControlSet \ Control \ ComputerName \ ActiveComputerName

HKLM \ SYSTEM \ CurrentControlSet \ Control \ ComputerName \ ComputerName

После перезагрузки компьютера я проверил имя компьютера в Панель управления \ Система и безопасность \ Система .К моему удивлению, у него все еще есть старое имя.

Еще раз проверил реестр, который содержит новое имя, т.е. MY-PC

Любая идея, почему имя компьютера на Панель управления \ Система иБезопасность \ Система не обновлялась?

1 Ответ

1 голос
/ 06 сентября 2010

Функция SetComputerNameA устанавливает только имя netbios.Вам нужно использовать SetComputerNameEx Я думаю.

BOOL WINAPI SetComputerNameEx(
  __in  COMPUTER_NAME_FORMAT NameType,
  __in  LPCTSTR lpBuffer
);

С COMPUTER _NAME_FORMAT как ComputerNamePhysicalDnsHostname

...