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 ...
最新文章
- 计算机内存作图多大合适3d,【2人回答】你好,我想问问电脑256G内存对于学生画图设计够吗?-3D溜溜网...
- JAVA并发编程实战---第三章:对象的共享
- MATLAB从入门到精通系列之几个实用小技巧
- 设置datalist 中option的宽度_Flutter中http请求抓包的完美解决方案
- 鼠标右键转圈圈_win10系统右键一直转圈
- Android通过广播实现强制下线功能
- struts2从一个action跳到另一个action的配置方法
- 小白带你入坑xamarin系列之环境搭建和准备
- ubuntu 14.04 apache php mysql_Ubuntu 14.04 升级PHP 和 Apache
- python入门经典27版_【python】编程语言入门经典100例--27
- Java多线程基础篇(02)-多线程的实现
- 做任务云闪付为什么要实名认证_ISO9001质量体系认证:为什么要做?如何去做?...
- 天天都在用的 Nginx,可你知道如何用一个反向代理实现多个不同类型的后端网站访问吗?...
- 从海报视觉到网页设计
- OptiStruct 11.0有限元优化分析视频教程
- 数据恢复软件性能大比拼
- 3D打印机打印中途停止且显示挤出头温度过低
- CTF 每日一题 Day44 rot
- python calu_Python中*args,**kwargs的使用
- 《重新定义公司》读书笔记
热门文章
- 高频电子线路_实验一:调谐放大器
- 控制工程中的数学建模(4)——控制系统时域数学模型建立的一般步骤(之一)
- SkeyeARS 超高清8K视频录像检索、 回放、控制解决方案
- Android浏览器速度测试,四大Android手机浏览器 上网速度实测比较
- html5游戏开发教程实战:五子棋、四子棋、围棋、翻转棋四种对弈游戏,仅仅100行代码
- hibernate整合openGauss
- 数字证书、CA、CA证书,傻傻分不清楚?这一篇看懂
- Java学习-函数式接口
- 冒险岛单机服务器修改,关于一树冒险岛单机技能 转数最新修改
- win64 oracle下载,oracle 11g 64位下载