我想备份注册表某个键的值,怎么做啊。
然后我备份的还可以恢复!!
谢谢大家帮忙啊。

解决方案 »

  1.   

    导入导出注册表http://www.vckbase.com/document/viewdoc/?id=724
      

  2.   

    先打开某个key,返回的是一个HKEY,然后枚举这个key下面的 value_name 和value 值.
    开 key RegOpenKeyEx
    取得value 名称RegEnumValue
    取value 值RegQueryValueEx CRegEdit lreg;
    int getres;
    int index = 0;

    TCHAR buf[1000];
    TCHAR value[1000];
    DWORD bufsize = 1000;
    DWORD value_type;
    HKEY run_key;
    if (::RegOpenKeyEx(regkey, subkey, NULL, KEY_ALL_ACCESS, &run_key) != ERROR_SUCCESS) 
    return;
    ZERO_MEMORY(buf, 1000);
    bufsize = 1000;
    getres = RegEnumValue(run_key, index++, buf, &bufsize, NULL,&value_type, NULL,NULL);

    while (getres == ERROR_SUCCESS) {

    TRACE("keyname: %s value: ", buf);

    if (value_type == REG_SZ) {
    ZERO_MEMORY(value, 1000);
    bufsize = 1000;
    if (RegQueryValueEx(run_key, buf,NULL, NULL, (LPBYTE)value,&bufsize) == ERROR_SUCCESS) {
    TRACE("%s\n",value);
    CString startvalue = value;
    std::list<CString> params;

    if (startvalue.Find(" /") != -1)
    startvalue = startvalue.Left(startvalue.Find(" /")); startvalue = StringClearChar(startvalue, TCHAR(34));
    startvalue = StringClearChar(startvalue, TCHAR(39)); CString filename, fullname;
    fullname = startvalue;
    filename = GetFileName(fullname);
    STARTUP_NODE lnode;
    lnode.iType = STARTUP_NODE::_type_start_reg; lnode.hRegKey = regkey;
    lnode.strSubKey = subkey;
    lnode.strValueName = buf;
    rlist.push_back(lnode);
    }
    }else {
    TRACE("\n");
    }
    ZERO_MEMORY(buf, 1000);
    getres = RegEnumValue(run_key, index++, buf, &bufsize, NULL,&value_type, NULL,NULL);
    }
    ::RegCloseKey(run_key);