2010-09-06 53 views
1

我使用的代码下面一行改变我的计算机名称:问题与SetComputerName功能

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

任何想法,为什么在控制面板\系统和安全\ SYSTEM计算机名称一直没有更新?

回答

1

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

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

随着COMPUTER _NAME_FORMAT为ComputerNamePhysicalDnsHostname