大数据量注册表操作
大数据量注册表操作
TZ们,我遇到了一个非常非常非常非常棘手的问题,就是想往注册表里面导入30MB+的数据,用.reg、reg.exe、RegSetValue都不行,谁能帮帮我啊?不知道用什么函数才行。
代码:
#include <Windows.h>#include <iostream>using namespace std;int main(void){ const char* SubKeyName = "Software\\Thunisoft\\Unispim\\6.6"; const char* ValueName = "Config"; char TempValue[39488]; //39488是文件大小 FILE* File; HKEY hKey; long t; DWORD dw; if( (File=fopen("REGDAT.DAT","rb"))==NULL) //REGDAT.DAT是数据文件 { cout << "Error: OpenFile" << endl; return -1; } if( (t=fread((void*)&TempValue,1,39488,File))!=39488) { cout << "Error: ReadFile" << endl; cout << "Returned: " << t << endl; fclose(File); return -1; } fclose(File); if( RegCreateKeyEx(HKEY_CURRENT_USER, SubKeyName, 0, REG_NONE, REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL, &hKey, &dw)!=ERROR_SUCCESS ) { cout << "Error: CreateKey" << endl; return -1; } RegCloseKey( hKey ); if( RegOpenKeyEx(HKEY_CURRENT_USER, SubKeyName, 0, KEY_QUERY_VALUE|KEY_SET_VALUE, &hKey)!=ERROR_SUCCESS ) { cout << "Error: OpenKey" << endl; return -1; } if( RegSetValueEx(hKey, ValueName, 0, REG_BINARY,(const BYTE*)TempValue , 39489) != ERROR_SUCCESS ) { cout << "Error: RegSetValueEX" << endl; RegCloseKey( hKey ); return -1; } RegCloseKey( hKey ); cout << "Succeeded!" << endl; system("pause>nul"); return 0;}
先生成一个c:\\30M.reg文件
然后
system("regedit.exe /s c:\\30M.reg");
_unlink("c:\\30M.reg");