C/C++得到本地程序安装路径

来源:互联网 发布:关于网络诈骗案件 编辑:程序博客网 时间:2024/05/21 17:35
#include <iostream>  
#include <windows.h>  
using namespace std;  
#define RTN_ERROR 13  
#pragma comment(lib, "advapi32")  
int main(void)  
{  
    #define MY_BUFSIZE 132    // Arbitrary initial value.   
    // Dynamic allocation will be used.  
    HKEY hKey;  
    TCHAR szProductType[MY_BUFSIZE];  
    memset(szProductType,0,sizeof(szProductType));  
    DWORD dwBufLen = MY_BUFSIZE;  
    LONG lRet;  
  
    // 下面是打开注册表, 只有打开后才能做其他操作   
    lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,  // 要打开的根键   
        TEXT("SOFTWARE\\TENCENT\\QQ2009"), // 要打开的子子键   
        0,        // 这个一定要为0   
        KEY_QUERY_VALUE,  //  指定打开方式,此为读   
        &hKey);    // 用来返回句柄   
  
    if(lRet != ERROR_SUCCESS)   // 判断是否打开成功   
        return 1;  
    //下面开始查询   
    lRet = RegQueryValueEx(hKey,  // 打开注册表时返回的句柄   
        TEXT("Install"),  //要查询的名称,qq安装目录记录在这个保存   
        NULL,   // 一定为NULL或者0   
        NULL,     
        (LPBYTE)szProductType, // 我们要的东西放在这里   
        &dwBufLen);  
    if(lRet != ERROR_SUCCESS)  // 判断是否查询成功   
        return 1;  
    RegCloseKey(hKey);  
    char ansi[MY_BUFSIZE];   
    WideCharToMultiByte(CP_ACP, 0, szProductType, -1, ansi, sizeof(ansi), NULL, NULL);   
    strcat(ansi,"\\Bin\\QQ.EXE");  
    cout<<ansi;  
    WinExec(ansi,SW_SHOW);   
}