vc++高级班之注册表篇[3]---注册表中键值的相关操作
来源:互联网 发布:巴西足球知乎 编辑:程序博客网 时间:2024/05/17 22:27
①、键值信息的获取:RegQueryValueEx
方式一:
HKEY hKey = NULL;
TCHAR *lpszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS) {
DWORD dwValueCount = 0, maxValueNameLen = 0, maxValueDataLen = 0;
lRet = RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &dwValueCount, &maxValueNameLen, &maxValueDataLen, NULL, NULL);
if (lRet == ERROR_SUCCESS) {
DWORD dwType = 0;
BYTE *lpData = new BYTE[maxValueDataLen+1];
ZeroMemory(lpData, maxValueDataLen+1);
lRet = RegQueryValueEx(hKey, _T("Edifier.EasyVOL"), NULL, &dwType, lpData, &maxValueDataLen);
CString strValue;
strValue.Format(_T("%s"), lpData);
MessageBox(strValue);
delete [] lpData;
}
RegCloseKey(hKey);
}
方式二:
HKEY hKey = NULL;
TCHAR *lpszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS) {
DWORD dwType = 0, dwDataLen = 0;
BYTE *lpData = NULL;
lRet = RegQueryValueEx(hKey, _T("Edifier.EasyVOL"), NULL, &dwType, NULL, &dwDataLen);
lpData = new BYTE[dwDataLen+1];
ZeroMemory(lpData, dwDataLen+1);
lRet = RegQueryValueEx(hKey, _T("Edifier.EasyVOL"), NULL, &dwType, lpData, &dwDataLen);
RegCloseKey(hKey);
CString strValue;
strValue.Format(_T("%s"), lpData);
MessageBox(strValue);
delete [] lpData;
}
===================================================
②、键值信息的设置:RegSetValueEx
HKEY hKey = NULL;
TCHAR *lpszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS) {
CString strPath = _T("D:\\Program Files\\SoftWare\\123.exe");
RegSetValueEx(hKey, _T("Edifier.EasyVOL"), 0, REG_SZ, (LPBYTE)strPath.GetBuffer(), strPath.GetLength()*sizeof(TCHAR));
strPath = _T("G:\\VMWare\\CentOS\\abc.exe");
RegSetValueEx(hKey, _T("TestRun"), 0, REG_SZ, (LPBYTE)strPath.GetBuffer(), strPath.GetLength()*sizeof(TCHAR));
RegCloseKey(hKey);
}
===================================================
③、键值的删除:RegDeleteValue
HKEY hKey = NULL;
TCHAR *lpszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS) {
RegDeleteValue(hKey, _T("TestRun"));
RegCloseKey(hKey);
}
===================================================
④、键值的枚举操作:RegEnumValue
HKEY hKey = NULL;
TCHAR *lpszSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS) {
DWORD dwValueCount = 0, maxValueNameLen = 0, maxValueDataLen = 0;
lRet = RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL, &dwValueCount, &maxValueNameLen, &maxValueDataLen, NULL, NULL);
if (lRet == ERROR_SUCCESS) {
DWORD dwNameLen = maxValueNameLen+1;
TCHAR *pszName = new TCHAR[dwNameLen];
DWORD dwType = 0;
DWORD dwValueDataLen = maxValueDataLen+1;
BYTE *lpValueData = new BYTE[dwValueDataLen];
for (DWORD dwIndex = 0; dwIndex < dwValueCount; ++dwIndex) {
dwNameLen = maxValueNameLen+1;
ZeroMemory(pszName, dwNameLen);
dwValueDataLen = maxValueDataLen+1;
ZeroMemory(lpValueData, dwValueDataLen);
lRet = RegEnumValue(hKey, dwIndex, pszName, &dwNameLen, NULL, &dwType, lpValueData, &dwValueDataLen);
//Other operations
CString strValueData;
strValueData.Format(_T("%s"), lpValueData);
}
delete [] pszName;
delete [] lpValueData;
RegCloseKey(hKey);
}
}
===================================================
※※※ 小作业:自己试着做一款开机启动项查询工具
------------------------------------- End -------------------------------------------
- vc++高级班之注册表篇[3]---注册表中键值的相关操作
- vc++高级班之注册表篇[2]---注册表中键的相关操作
- vc++高级班之注册表篇[4]---其他类型键值的设置
- VC之注册表相关操作
- vc++高级班之注册表篇[1]---认识并操作注册表
- VC++删除注册表键值
- 注册表的相关操作
- VC中操作注册表的实现源码
- vc中注册表的一些简单操作
- VC++ 中对注册表的操作
- VC++ 中对注册表的操作
- VC中注册表的读写修改操作
- VC中简单操作注册表
- VC中简单操作注册表
- VC中简单操作注册表
- VC中简单操作注册表
- VC中简单操作注册表
- Vc 枚举注册表键值名
- GDI+笔记
- 以特定字符相隔or以空格相隔的字符串分割
- vc++高级班之注册表篇[2]---注册表中键的相关操作
- 《Android深度探索(卷1):HAL与驱动开发》虚拟实验环境(Ubuntu Linux)及源代码免费下载,不需要CPU虚拟化支持
- XML解析(SAX详解)
- vc++高级班之注册表篇[3]---注册表中键值的相关操作
- 1004 大数
- Android---把用户带入另外一个应用程序(二)
- Objective-C 协议 简介 +委托的实现
- XML解析(SAX详解)
- 区分虚拟网卡与物理网卡
- asp.net错误处理的三种方法
- 得到win7 win8的桌面句柄
- C++ int,char,string,CString类型转换(整理总结)