我使用以下代码行来更改我的计算机名称:
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 \系统\ CurrentControlSet \控制\计算机名\ ActiveComputerName
HKLM \系统\ CurrentControlSet \控制\计算机名\计算机名
重新启动计算机后,我从控制面板\系统和安全\系统检查了计算机名称。令我惊讶的是,它仍有旧名称。
再次检查包含新名称的注册表,即MY-PC
知道为什么控制面板\系统和安全\系统中的计算机名称尚未更新?
答案 0 :(得分:1)
SetComputerNameA函数仅设置netbios名称。您需要使用我认为的SetComputerNameEx。
BOOL WINAPI SetComputerNameEx(
__in COMPUTER_NAME_FORMAT NameType,
__in LPCTSTR lpBuffer
);
将COMPUTER
_ NAME_FORMAT设为ComputerNamePhysicalDnsHostname