操作注册表:
#include <iostream> #include <atlbase.h> void Add_Key() { HKEY hSubKey; DWORD dwKeyValue = 110; RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"), 0, NULL, NULL,KEY_READ | KEY_WRITE, NULL, &hSubKey, NULL); if ( ERROR_SUCCESS != RegSetValueEx(hSubKey, TEXT("xgc"), NULL, REG_DWORD, (const byte*)&dwKeyValue, sizeof(DWORD))) { printf ("Error\n"); } if( hSubKey!=NULL ){ RegCloseKey(hSubKey); } } void Query() { HKEY hKey; DWORD dwReturn; DWORD dwBufSize = sizeof(DWORD); if( RegOpenKeyExW(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\") ,0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { DWORD error = //RegQueryValueExW(hKey,TEXT("xgc"),0,0, reinterpret_cast<LPBYTE>(&dwReturn), &dwBufSize); RegQueryValueExW(hKey,TEXT("xgc"),0,0, reinterpret_cast<LPBYTE>(&dwReturn), &dwBufSize); if(error == ERROR_SUCCESS) { printf("Key value is: %d \n", dwReturn); } else { printf("Cannot query for key value; Error is: %d\n", error); } } RegCloseKey(hKey); } int main() { //Add_Key(); Query(); std::cout<<"Over"<<std::endl; getchar(); return 0; }
REG_SZ 类型不一样哦,见如下代码:
#include <iostream> #include <atlbase.h> //#include <string> void Add_Key() { HKEY hSubKey; //DWORD dwKeyValue = 110; std::wstring str(L"Hello"); RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"), 0, NULL, NULL,KEY_READ | KEY_WRITE, NULL, &hSubKey, NULL); std::cout<<"Length="<<str.size() * sizeof(WCHAR)<<std::endl; if ( ERROR_SUCCESS != RegSetValueEx(hSubKey, TEXT("xgc"), NULL, REG_SZ, (const byte*)str.c_str(), str.size() * sizeof(WCHAR)) ) { printf ("Error\n"); } if( hSubKey!=NULL ){ RegCloseKey(hSubKey); } } void Query() { HKEY hKey; LPBYTE pData = NULL; DWORD dwBufSize; if( RegOpenKeyExW(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\") ,0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) { LPBYTE pData = NULL;DWORD Type; DWORD error = RegQueryValueEx(hKey,TEXT("xgc"),NULL,&Type,pData,&dwBufSize); pData = (LPBYTE)malloc(dwBufSize*sizeof(BYTE)); error = //RegQueryValueExW(hKey,TEXT("xgc"),0,0, reinterpret_cast<LPBYTE>(&dwReturn), &dwBufSize); RegQueryValueExW(hKey,TEXT("xgc"),0,&Type, pData, &dwBufSize); if(error == ERROR_SUCCESS) { printf("Key value is: %ws \n", pData); } else { printf("Cannot query for key value; Error is: %d\n", error); } free(pData); } RegCloseKey(hKey); } int main() { //Add_Key(); Query(); std::cout<<"Over"<<std::endl; getchar(); return 0; }
时间: 2024-08-04 23:03:07