最近在做一个程序,需要获取程序的安装路径,在网上查了一下,可以通过调用Windows的接口来访问注册表的方式来实现,但我调用成功了,未能获取路径,下面是代码:
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
#define MY_BUFSIZE 132
int main()
{
HKEY hKey;
LPBYTE szProductType=new BYTE[MY_BUFSIZE];
memset(szProductType, 0, sizeof(szProductType));
DWORD dwBufLen = MY_BUFSIZE;
LONG lRet;
lRet = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Tencent\\QQ2009"), 0, KEY_READ, &hKey);
if (lRet != ERROR_SUCCESS) // 判断是否打开成功
cout << "Open fail!\n";
lRet = RegQueryValueEx(hKey, TEXT("AndroidConn"), NULL, NULL, szProductType, &dwBufLen);
if (lRet != ERROR_SUCCESS) // 判断是否查询成功
cout << "Query fail!\n";
RegCloseKey(hKey);
cout << (char*)szProductType;
system("pause");
return 0;
}
RegOpenKeyEx和RegQueryValueEx函数都调用成功了,但最终szProductType的值如下:
不知道哪里出现了问题,求解