2010-09-06 84 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