VC DLL 自学编程请教

xiangyu070182 2018-07-25 12:19:51
各位高手好,我在自学VC,如何在DLL中“通过注册表键值获取某软件安装路径”,方便其他软件调用。我也看了一些例子,都是加减那种数学计算的,不知道这种路径或字符串的怎么做。如果有源代码可以参考和学习就更好了。谢谢!
...全文
286 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangyu070182 2018-08-15
  • 打赏
  • 举报
回复
现在就是把AfxMessageBox替换成 return了,但是没有得到想要的返回值,全是“屯”
jacksonfan 2018-08-04
  • 打赏
  • 举报
回复
把代码直接放到dll里一个函数里
引用 3 楼 xiangyu070182 的回复:
[quote=引用 1 楼 mscf 的回复:]
看Windows API文档,Reg开头的一组函数用来操作注册表,前提是你要知道要查找的键的位置


MFC里面得到地址可以用下面的代码获得,但是不知道怎么样把他编辑成DLL文件
void CgetPathDlg::OnBnClickedButton1()
{
HKEY hKey;
LONG lValue = 0; //先读取数据的长度
LPCTSTR pRegKey = _T("SDL.FileTM.1\\shell\\open\\command"); //注册表读取位置
LONG lRet = RegOpenKeyEx(HKEY_CLASSES_ROOT, pRegKey, 0, KEY_QUERY_VALUE, &hKey );

if( lRet == ERROR_SUCCESS )
{

RegQueryValue(HKEY_CLASSES_ROOT, pRegKey, nullptr, &lValue);
TCHAR *pBuf = new TCHAR[lValue];
RegQueryValue(HKEY_CLASSES_ROOT, pRegKey, pBuf, NULL);
AfxMessageBox(pBuf);
}
else
{
AfxMessageBox("未安装");
}
RegCloseKey(hKey);
}[/quote]
xiangyu070182 2018-07-30
  • 打赏
  • 举报
回复
引用 1 楼 mscf 的回复:
看Windows API文档,Reg开头的一组函数用来操作注册表,前提是你要知道要查找的键的位置


MFC里面得到地址可以用下面的代码获得,但是不知道怎么样把他编辑成DLL文件
void CgetPathDlg::OnBnClickedButton1()
{
HKEY hKey;
LONG lValue = 0; //先读取数据的长度
LPCTSTR pRegKey = _T("SDL.FileTM.1\\shell\\open\\command"); //注册表读取位置
LONG lRet = RegOpenKeyEx(HKEY_CLASSES_ROOT, pRegKey, 0, KEY_QUERY_VALUE, &hKey );

if( lRet == ERROR_SUCCESS )
{

RegQueryValue(HKEY_CLASSES_ROOT, pRegKey, nullptr, &lValue);
TCHAR *pBuf = new TCHAR[lValue];
RegQueryValue(HKEY_CLASSES_ROOT, pRegKey, pBuf, NULL);
AfxMessageBox(pBuf);
}
else
{
AfxMessageBox("未安装");
}
RegCloseKey(hKey);
}
蒋晟 2018-07-28
  • 打赏
  • 举报
回复
MSI引擎的可以用MsiGetProductInfoEx INSTALLPROPERTY_INSTALLLOCATION
第三方引擎的就没办法了,安装路径人家可以随便找个位置写甚至完全不写的。
薛定谔之死猫 2018-07-26
  • 打赏
  • 举报
回复
看Windows API文档,Reg开头的一组函数用来操作注册表,前提是你要知道要查找的键的位置

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧