C++编程实现从注册表中获取程序安装路径并调用exe文件
来源:互联网 发布:betterzip mac注册码 编辑:程序博客网 时间:2024/05/18 02:43
利用注册表函数获取程序安装路径的宽字符和WINEXEC方法参数不一致的问题。附上代码如下:
#include
#include
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);
}
在这里,szProductType是TCHAR类型,也就是宽字符,而winexec的第一个参数要求是char*,所以就出问题了。使用WideCharToMultiByte方法可以完美解决这个问题。运行程序后,就会出现qq的启动界面。
0 0
- C++编程实现从注册表中获取程序安装路径并调用exe文件。
- C++编程实现从注册表中获取程序安装路径并调用exe文件
- C++编程实现从注册表中获取程序安装路径并调用exe文件
- C++编程实现从注册表中获取程序安装路径并调用exe文件
- C++编程实现从注册表中获取程序安装路径并调用exe文件
- 工作问题积累(九)C++:实现从注册表中获取程序安装路径并调用exe文件
- C#(WPF)程序将Debug中的.exe文件放入注册表中启动,获取错误的当前路径--解决方案
- 从注册表中获取BeyondCompare安装路径
- 调用Windows接口访问注册表来获取程序安装路径
- c++获取注册表中程序的安装路径
- C获取当前程序路径, exe路径
- 读注册表获取程序安装路径
- Inno Setup 注册表获取程序安装路径
- 从注册表获取路径
- VC从EXE文件弹窗中获取路径
- 获取EXE文件安装后的路径
- 获取exe程序路径
- C# 获取常见软件的安装路径(调用注册表)
- mysql单词
- 判断activity渲染完成
- Linux下部署项目三(安装Tomcat)
- java面试经历
- HttpClient工具正确使用方式
- C++编程实现从注册表中获取程序安装路径并调用exe文件
- 2016/7/25 周一 xml dtd js
- c#中internal的作用
- xml部分单词
- xcode 新特性的 一点理解 enable module 和 link frameworks automatically
- Java多线程研究06-带返回值的线程定义接口Callable以及Future,FutureTask的使用
- cocos2dx-lua制作游戏五维图
- hdu1151(最小路径覆盖)
- spring整合jbpm时出错:java.lang.ClassNotFoundException: javax.mail.Message$RecipientType