//#include "../Dll1/dll.h"
#include <stdio.h>
#include <windows.h>
#include <strsafe.h>
#include <iostream>
using namespace std;
void ShowError(){
HANDLE hBuff=nullptr;
DWORD dwErr = GetLastError();
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, dwErr, 0, (PTSTR)&hBuff, 0, nullptr);
MessageBox(nullptr, (LPCWSTR)hBuff, nullptr, 0);
}
void EnumRegister(HKEY hKey) {
TCHAR szSubKey[MAXBYTE] = {};
DWORD cchSubKey = MAXBYTE;
DWORD nSubKeyCount = 0;
DWORD nValueCount = 0;
//子键和项的个数
RegQueryInfoKey(hKey, nullptr, nullptr, nullptr,
&nSubKeyCount, nullptr, nullptr, &nValueCount, nullptr, nullptr, nullptr, nullptr);
for (DWORD i = 0; i < nSubKeyCount; i++) {
//遍历子键名
cchSubKey = MAXBYTE;
RegEnumKeyEx(hKey, i, szSubKey, &cchSubKey, nullptr, nullptr, nullptr, nullptr);
wcout << szSubKey << endl;
/*HKEY hSubKey = nullptr;
RegOpenKeyEx(hKey, szSubKey, 0, KEY_ALL_ACCESS, &hSubKey);
RegQueryInfoKey(hSubKey, nullptr, nullptr, nullptr,
&nSubKeyCount, nullptr, nullptr, &nValueCount, nullptr, nullptr, nullptr, nullptr);*/
}
TCHAR szValue[MAXBYTE] = {};
TCHAR szData[MAXBYTE] = {};
DWORD dwType = 0;
for (DWORD i = 0; i < nValueCount; i++) {
DWORD cchValue = MAXBYTE;
DWORD cbData = MAXBYTE * sizeof(TCHAR);
RegEnumValue(hKey, i, szValue, &cchValue, nullptr, &dwType, (LPBYTE)szData, &cbData);
switch (dwType) {
case REG_DWORD:
wcout << szValue << " = " << *(DWORD*)szData << endl;
break;
case REG_QWORD:
wcout << szValue << " = " << *(DWORD64 *)szData << endl;
break;
case REG_SZ:
wcout << szValue << " = " << szData << endl;
break;
}
}
}
int main() {
setlocale(LC_ALL, "zh-cn");
//创建或打开均可
HKEY hKey = nullptr;
LSTATUS nResult = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\2345.com"), 0, nullptr,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nullptr, &hKey, nullptr);
if (nResult != ERROR_SUCCESS) {
ShowError();
}
////设置数据
//int nAge = 22;
//nResult = RegSetValueEx(hKey, TEXT("Age"), 0, REG_DWORD, (BYTE *)&nAge, sizeof(nAge));
//if (nResult != ERROR_SUCCESS) {
// ShowError();
//}
//读取数据
DWORD dwType = 0;
TCHAR szBuff[MAXBYTE] = {};
DWORD dwBuffSize = MAXBYTE;
//读取数据
//RegGetValue(hKey, nullptr, TEXT("Age"), RRF_RT_ANY, nullptr, szBuff, &dwBuffSize);
//读取数据
//RegQueryValueEx(hKey, TEXT("Age"), nullptr, nullptr, (LPBYTE)szBuff, &dwBuffSize);
//删除数据
//RegDeleteKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\CR37"), KEY_WOW64_32KEY, 0);
EnumRegister(hKey);
RegCloseKey(hKey);
return 0;
}