您的位置:首页 > 编程语言 > Qt开发

qt读取注册表时重定向问题的解决

2016-05-10 19:39 831 查看
        我们知道32位程序在64位机器上运行时,当访问注册表时,有重定向问题的存在,下面针对Qt编程中这个问题的解决提供一种方法。

        

HKEY hKEY; //定义有关的 hKEY, 在查询结束时要关闭。

LPCSTR data_Set="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";

long ret0=(::RegOpenKeyExA(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKEY));


if(ret0!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行

{

qDebug()<<"错误: 无法打开有关的hKEY!";


}


BYTE info[80]={0};

DWORD type_1=REG_DWORD ;

DWORD cbData_1=80;


//hKEY为刚才RegOpenKeyEx()函数所打开的键的句柄,"RegisteredOwner"。

//表示要查 询的键值名,type_1表示查询数据的类型,owner_Get保存所。

//查询的数据,cbData_1表示预设置的数据长度。

long ret1=::RegQueryValueExA(hKEY, "RegisteredOwner", NULL,

&type_1, (LPBYTE)info, &cbData_1);


//long ret1=::KeyqueryValue(hKEY, "InstallDate", info, &len);

if(ret1!=ERROR_SUCCESS)

   {

qDebug()<<"错误1: 无法查询有关注册表信息!";


   }


// QString str = ::fromLocal8Bit(info);

//  QString str =QString::fromAscii(info);


QString str =QString::fromAscii((char*)(info));

qDebug()<<str;


::RegCloseKey(hKEY);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息