C++编程读取注册表文件
C++编程读取注册表文件
C++通过访问注册表获取已安装软件信息列表
C++编程实现从注册表中获取程序安装路径并调用exe文件
下边是通过读取注册表获取360安装路径的过程
regopenkeyex
https://docs.microsoft.com/en-us/windows/desktop/api/winreg/nf-winreg-regopenkeyexa
打开指定的注册表项。请注意,键名称不区分大小写。
如果函数成功,则返回值为ERROR_SUCCESS。
RegQueryValueEx
检索与打开的注册表项关联的指定值名称的类型和数据。
如果函数成功,则返回值为ERROR_SUCCESS。
完整代码
LPCTSTR lpSubKey;//查询时的子键
HKEY RootKey;//查询时的主键
HKEY hkResult;//查询注册表的结果
LONG lRet;
DWORD index = 0;
DWORD dwKeyLen = 255;
DWORD dwType = REG_BINARY | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ | REG_NONE | REG_SZ;
TCHAR szBuffer[255] = { 0 };
DWORD dwNameLen = 255;RootKey = HKEY_USERS;
CString sid;
getSID(sid);
sid+= _T("\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\360se6");
cout << "lpSubKey : " << sid << endl;
lpSubKey = sid;
cout << "lpSubKey : " << lpSubKey << endl;
//下面是打开注册表, 只有打开后才能做其他操作
//主键和子键共同组成了注册表中的目录
lRet = RegOpenKeyEx(RootKey, lpSubKey, 0, KEY_ALL_ACCESS, &hkResult);
cout << "lRet : " << lRet << endl;
if (lRet == ERROR_SUCCESS) // 判断是否打开成功
{cout << "retOpen : " << lRet << endl;LONG retOpen = RegQueryValueEx(hkResult, _T("InstallLocation"), 0, &dwType, (LPBYTE)szBuffer, &dwNameLen);//通过上边的注册表截图可以看到,通过"InstallLocation"可以找到对应的路径信息cout << "retOpen : " << retOpen << endl;cout << "szBuffer : " << szBuffer << endl;RegCloseKey(hkResult);
}
其中的SID()是为了获取用户的SID,实现如下
void getSID(CString &sid)
{char userName[MAX_NAME] = "";char sid1[MAX_NAME] = "";char sid2[MAX_NAME] = "";char sid3[MAX_NAME] = "";char sid4[MAX_NAME] = "";char sid5[MAX_NAME] = "";char sid6[MAX_NAME] = "";DWORD nameSize = sizeof(userName);GetUserName((LPSTR)userName, &nameSize);char userSID[MAX_NAME] = "";char userDomain[MAX_NAME] = "";DWORD sidSize = sizeof(userSID);DWORD domainSize = sizeof(userDomain);SID_NAME_USE snu;LookupAccountName(NULL,(LPCSTR)userName,(PSID)userSID,&sidSize,(LPSTR)userDomain,&domainSize,&snu);PSID_IDENTIFIER_AUTHORITY psia = GetSidIdentifierAuthority(userSID);sidSize = sprintf_s(sid1, "S-%lu-", SID_REVISION);sidSize += sprintf_s(sid2, "%-lu", psia->Value[5]);sid += sid1;sid += sid2;int i = 0;int subAuthorities = *GetSidSubAuthorityCount(userSID);for (i = 0; i < subAuthorities; i++){char sid7[MAX_NAME] = "";sidSize += sprintf_s(sid7, "-%lu", *GetSidSubAuthority(userSID, i));sid += sid7;}cout << sid << endl;
}
C++编程读取注册表文件相关推荐
- vbs脚本功能:1、判断系统位数64/32;2、读取注册表,读取应用名称。3、读取txt文件;4、执行exe文件,安装程序。
vbs脚本功能:1.判断系统位数:2.读取注册表,读取应用名称.displayName就是程序与功能里面展示的应用名称.3.读取txt文件:4.执行exe文件,安装程序. 注意:1.文本编码方式要用A ...
- qsettings删除注册表_Qt QSettings读取注册表和ini | 学步园
1.读取注册表,以读取已经安装的软件为例. 已经安装的软件信息的注册表位置: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ ...
- php 读取注册表 不用wscript.shell,WebShell的检测技术_91Ri.org
一.Webshell 的常见植入方法 -启明星辰 Leylo Trent WebShell 攻击是常见的用来控制Web 服务器的攻击方法,WebShell 文件通常是可执行的脚本文件,例如asp, ...
- 求助:Windows Service 读取注册表键值
最近项目需要程序监控记录用户使用和打开的文件,于是做了一个使用Windows Service监控Recent文件夹中文件增加和更改的程序, 但是需要在服务程序确定Recent文件夹的路径,使用Regi ...
- JavaScript读取注册表
代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...
- 0xc000000f 由于系统注册表文件丢失或损坏,因此Windows无法加载
WIN7出现以下情况,是thinkpad x61笔记本.Windows未能启动.原因可能是最近更改了硬件或软件,解决此问题的步骤: 1:插入Windows安装光盘并从新启动计算机. 2:选择语言设置, ...
- 自动打开WINDWOS远程控制的注册表文件
自动打开WINDWOS远程控制和关闭自动更新的注册表文件 转载于:https://blog.51cto.com/450911/94942
- c 语言读取注册表信息,C++读取注册表的实现方法
C++读取注册表 GetRegValue.h: #ifndef __GETREGVALUE_H__ #define __GETREGVALUE_H__ #include //------------- ...
- 命令编写注册表文件修改注册表项
命令编写注册表文件修改注册表项 1.何谓REG文件 REG文件实际上是一种注册表脚本文件,双击REG文件即可将其中的数据导入到注册表中.利用REG文件我们可以直接对注册表进行任何修改操作,它对注册表的 ...
- android 遍历sdcard,Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法...
本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法.分享给大家供大家参考,具体如下: private void CopyAssets(String a ...
最新文章
- FL计算机软件,FL Studio12水果音乐制作软件
- FZU 1901 Period II(KMP中的next)题解
- Linux下制作动图的软件,Linux 下制作Gif动画
- 【数据库系统概论】考研重点章节分析【0】
- PHP PDO 预处理语句与存储过程
- jQuery利用JSONP解决AJAX跨域请求
- python的异常处理
- 光耦驱动单向可控硅_华越国际一文带路:可控硅触发设计技巧
- 第二章 二进制数值和记数系统
- java jqgrid treegrid_JqGrid中文文档之TreeGrid
- ResourceUtils读取properties文件
- 并发编程---填充缓存行消除伪共享
- 【代码优化】构造器参数繁多时候,考虑使用builder模式
- 前端 利用html实现分页切换效果
- 3DMax如何安装?3DMax2018软件安装图文教程全解
- java课设心得体会2000字_java课程设计报告心得体会
- HTML+CSS静态页面网页设计作业——甜品奶茶店(19页) HTML5网页设计成品_学生DW静态网页设计_web课程设计网页制作
- Cadence之ORCAD:导出Bom清单
- yocto项目下载与编译
- Linux创建用户和删除用户
热门文章
- 科创板已开板 区块链离科创板还远吗?
- windows 8.1安装VS2005出现安装失败:未能安装.NET framework 3.5解决方案
- 目前计算机硬件安全,计算机硬件与网络安全
- mp3文件怎么压缩大小
- oninput和onpropertychange以及其兼容处理
- chorme浏览器广告终结者视频白频解决办法
- 仿淘宝网站基于html网页模板设计静态网页模板参考.rar(项目源码)
- android 发布最新系统更新包,安卓升级包(安卓补丁包更新)
- Python笔记(21)正则表达式
- SpringBoot读取自定义配置文件