我正在嘗試執行一個應用程序,該應用程序顯示從註冊表中獲取PC的計算機名稱。它必須在64位窗口7機器上運行。使用RegQueryValueEx從註冊表中獲取機器名稱
但我只能設法輸出系統錯誤信息。
在下面的代碼, I(使用RegOpenKeyEx方法)=>總是得到value1str的值爲0(這是ERROR_SUCCESS) 和value2str(使用的RegQueryValueEx方法)=>爲2(其是ERROR_FILE_NOT_FOUND)
任何人都知道如何顯示真實的機器名稱?
請幫忙!
#define KEY_WOW64_64KEY (0x0100)
#include <iostream>
#include <string>
BEGIN_MESSAGE_MAP(CPOConLogApp, CWinApp)
END_MESSAGE_MAP()
CPOConLogApp::CPOConLogApp()
{
int value1;
int value2;
HKEY root = NULL;
CString value1Str,value2Str;
value1=RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\ComputerName\\ActiveComputerName"), NULL, KEY_READ|KEY_WOW64_64KEY, &root);
value1Str.Format("%d",value1);
MessageBoxA (NULL, value1Str, "Test", MB_OK);
LPBYTE data = NULL;
DWORD dwType;
DWORD dwSize;
data = new BYTE[dwType];
value2=RegQueryValueEx(HKEY_LOCAL_MACHINE,TEXT("Computer Name"), NULL, &dwType, data, &dwSize);
value2Str.Format("%d",value2);
MessageBoxA (NULL, value2Str , "Test", MB_OK);
}
'RegQueryValueEx'失敗的原因是密鑰是'ComputerName',沒有空格。用'RegEdit'快速檢查就會告訴你。這就是說,使用'GetComputerName'如下所示。 –