SetComputerName函数问题

时间:2010-09-06 10:15:41

标签: c windows windows-7

我使用以下代码行来更改我的计算机名称:

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

知道为什么控制面板\系统和安全\系统中的计算机名称尚未更新?

1 个答案:

答案 0 :(得分:1)

SetComputerNameA函数仅设置netbios名称。您需要使用我认为的SetComputerNameEx

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

COMPUTER _ NAME_FORMAT设为ComputerNamePhysicalDnsHostname