1. 程式人生 > >qt讀取登錄檔時重定向問題的解決

qt讀取登錄檔時重定向問題的解決

        我們知道32位程式在64位機器上執行時,當訪問登錄檔時,有重定向問題的存在,下面針對Qt程式設計中這個問題的解決提供一種方法。

HKEYhKEY;//定義有關的hKEY,在查詢結束時要關閉。
LPCSTRdata_Set="SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion";
longret0=(::RegOpenKeyExA(HKEY_LOCAL_MACHINE,data_Set,0,KEY_ALL_ACCESS|KEY_WOW64_64KEY,&hKEY));
if(ret0!=ERROR_SUCCESS)//如果無法開啟hKEY,則終止程式的執行
{
qDebug()<<"錯誤:無法開啟有關的hKEY!";
}
BYTEinfo[80]={0};
DWORDtype_1=REG_DWORD;
DWORDcbData_1=80;
//hKEY為剛才RegOpenKeyEx()函式所開啟的鍵的控制代碼,"RegisteredOwner"。
//表示要查詢的鍵值名,type_1表示查詢資料的型別,owner_Get儲存所。
//查詢的資料,cbData_1表示預設定的資料長度。
longret1=::RegQueryValueExA(hKEY,"RegisteredOwner",NULL,
&type_1,(LPBYTE)info,&cbData_1);
//longret1=::KeyqueryValue(hKEY,"InstallDate",info,&len);
if(ret1!=ERROR_SUCCESS)
{
qDebug()<<"錯誤1:無法查詢有關注冊表資訊!";
}
//QStringstr=::fromLocal8Bit(info);
//QStringstr=QString::fromAscii(info);
QStringstr=QString::fromAscii((char*)(info));
qDebug()<<str;
::RegCloseKey(hKEY);