Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

Бэкап реестра   Найти похожие ветки 

 
Roland88   (2004-06-13 00:14) [0]

Нужно реализовать реализовать бэкап реестра для программы-твикера (на запуске - импорт, по нажатию кнопки - восстановление). В ХР это делается через reg.exe и файл куста. А как это сделать в 9х-ах? Плиз, очень надо...


 
Apocalepse ©   (2004-06-13 00:19) [1]

Всмысле? Что конкретно ты хочеш, процедуры работы с реестром? Или конкретно дельфийский код бэкапа?


 
GuAV ©   (2004-06-13 00:23) [2]


> программы-твикера

достали! их уже дофига, и от них вреда иногда больше чем пользы...


 
GuAV ©   (2004-06-13 00:24) [3]

... особенно если проги написаны людьми, которые сами про реестр спрашивают.


 
Apocalepse ©   (2004-06-13 00:30) [4]


> достали! их уже дофига,

Да ну ладно много! Не много их, а бесплатных еще меньше!


 
GuAV ©   (2004-06-13 00:33) [5]


> Не много их, а бесплатных еще меньше!

И таких хватает. Сейчас на винте русских бесплатных штуки 3-4 найду, а если поискать в Инете...


 
Mim1 ©   (2004-06-13 00:35) [6]


> [4] Apocalepse ©   (13.06.04 00:30)
>
> > достали! их уже дофига,
>
> Да ну ладно много! Не много их, а бесплатных еще меньше!


От стоимсоти их полезность не увеличивается.


 
GuAV ©   (2004-06-13 00:40) [7]


> От стоимсоти их полезность не увеличивается.

Я бы даже сказал, что от платных вреда ещё больше.


 
Roland88   (2004-06-13 13:52) [8]

Товарищи мастера, я не просил подсказать ваше мнение по поводу твикеров, более того, я не навязываю вам свою програму, я пишу ее для СЕБЯ, и реализовываю там те функции, которые нужны МНЕ, поэтому, будьте  добры, не спешите ругать мою программу, а лучше помогите (Вы, тем более, мою программу, корее всего никогда не увидите, потому как это мой курсовой проект).

А прошу я помочь, потому как бэкап спокойно реализуется в ВинХР через reg.exe, но в других ОС этого нет. Подскажите, хотя бы метод бэкапа (я предполагал возможность затирания отдельной ветви и послдующего импорта через regedit.exe)


 
Mim1 ©   (2004-06-13 15:04) [9]

Даю намек, может стоит создавать резервную копию тоолько тех значений которые вы изменяете, ведь вчарашний ключ реестра может и не заработать после восстановления.

Плюс пример, не мой, может пригодится


unit RegExpo;

interface

uses
 Windows, Registry, Classes, SysUtils;

{$I-}
{$LONGSTRINGS ON}

{
 Regexpo

 Author : Arthur Hoornweg (arthur.hoornweg@email.de)
 Version : 1.00, May 1998
 O/S : Windows 95, 98, ME, NT, 2000, XP
       Delphi 2+
 Function :
   This unit allows you to backup a branch of the registry into a *.REG file,
   that is compatible with "regedit".
   Double-clicking such a file in the explorer will import it.

 Example:
   ExportRegistryBranch(HKEY_LOCAL_MACHINE,"SOFTWARE\Borland\Delphi","A:\DELPHI.REG")

 (c) 1998 A.M. Hoornweg. All rights reserved.

 You may use this software for all purposes, both commercial and
 noncommercial, as long as proper credit is given. The sourcecode may be distributed
 freely, as long as this copyright is included and no more than a marginal fee is
 asked.

 Disclaimer:

 I accept no responsibility whatsoever for any damages caused by these
 routines. Use them at your own risk. If you find any bugs, please let me know.
}

procedure ExportRegistryBranch(Rootsection: Integer; regroot: string;
 FileName: string);

implementation

function dblBackSlash(t: string): string;
var
 k: longint;
begin
 Result := t; {Strings are not allowed to have}
 for k := Length(t) downto 1 do {single backslashes}
   if Result[k] = "\" then Insert("\", Result, k);
end;

procedure ExportRegistryBranch(rootsection: Integer; Regroot: string;
 FileName: string);
var
 reg: TRegistry;
 f: Textfile;
 p: PChar;

 procedure ProcessBranch(root: string); {recursive sub-procedure}
 var
   values, keys: TStringList;
   i, j, k: longint;
   s, t: string; {longstrings are on the heap, not on the stack!}
 begin
   Writeln(f); {write blank line}
   case rootsection of
     HKEY_CLASSES_ROOT: s   := "HKEY_CLASSES_ROOT";
     HKEY_CURRENT_USER: s   := "HKEY_CURRENT_USER";
     HKEY_LOCAL_MACHINE: s  := "HKEY_LOCAL_MACHINE";
     HKEY_USERS: s          := "HKEY_USERS";
     HKEY_PERFORMANCE_DATA: s := "HKEY_PERFORMANCE_DATA";
     HKEY_CURRENT_CONFIG: s := "HKEY_CURRENT_CONFIG";
     HKEY_DYN_DATA: s       := "HKEY_DYN_DATA";
   end;
   Writeln(f, "[" + s + "\" + root + "]"); {write section name in brackets}

   reg.OpenKey(root, False);
   try
     values := TStringList.Create;
     try
       keys := TStringList.Create;
       try
         reg.GetValuenames(values); {get all value names}
         reg.GetKeynames(keys); {get all sub-branches}

         for i := 0 to values.Count - 1 do {write all the values first}
         begin
           s := values[i];
           t := s; {s=value name}
           if s = "" then s := "@" {empty means "default value", write as @}
           else
             s := """ + s + """; {else put in quotes}
           Write(f, dblbackslash(s) + "="); {write the name of the key to the file}

           case reg.Getdatatype(t) of {What type of data is it?}

             rdString, rdExpandString: {String-type}
               Writeln(f, """ + dblbackslash(reg.ReadString(t) + """));

             rdInteger: {32-bit unsigned long integer}
               Writeln(f, "dword:" + IntToHex(reg.readinteger(t), 8));

            {write an array of hex bytes if data is "binary." Perform a line feed
             after approx. 25 numbers so the line length stays within limits}

             rdBinary:
               begin
                 Write(f, "hex:");
                 j := reg.GetDataSize(t); {determine size}
                 GetMem(p, j); {Allocate memory}
                 reg.ReadBinaryData(t, p^, J); {read in the data, treat as pchar}
                 for k := 0 to j - 1 do
                 begin
                   Write(f, IntToHex(Byte(p[k]), 2)); {Write byte as hex}
                   if k <> j - 1 then {not yet last byte?}
                   begin
                     Write(f, ","); {then write Comma}
                     if (k > 0) and ((k mod 25) = 0) {line too long?} then
                       Writeln(f, "\"); {then write Backslash +lf}
                   end; {if}
                 end; {for}
                 FreeMem(p, j); {free the memory}
                 Writeln(f); {Linefeed}
               end;
             else
               Writeln(f, """"); {write an empty string if datatype illegal/unknown}
           end;{case}
         end; {for}
       finally
         reg.CloseKey;
       end;

     finally
       {value names all done, no longer needed}
       values.Free;
     end;

     {Now al values are written, we process all subkeys}
     {Perform this process RECURSIVELY...}
     for i := 0 to keys.Count - 1 do
       ProcessBranch(root + "\" + keys[i]);
   finally
     keys.Free; {this branch is ready}
   end;
 end; { ProcessBranch}

begin
 if RegRoot[Length(Regroot)] = "\" then {No trailing backslash}
   SetLength(regroot, Length(Regroot) - 1);
 Assignfile(f, FileName); {create a text file}
 Rewrite(f);
 if ioResult <> 0 then Exit;
 Writeln(f, "REGEDIT4"); {"magic key" for regedit}

 reg := TRegistry.Create;
 try
   reg.Rootkey := Rootsection;
   {Call the function that writes the branch and all subbranches}
   ProcessBranch(Regroot);
 finally
   reg.Free; {ready}
   Close(f);
 end;
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.042 c
1-1086902873
CyberSpy
2004-06-11 01:27
2004.06.27
Listview


1-1086940010
FireMan_Alexey
2004-06-11 11:46
2004.06.27
CheckListBox


3-1085722526
Alert
2004-05-28 09:35
2004.06.27
MySQL + Delphi


1-1087275583
an-na2002
2004-06-15 08:59
2004.06.27
внешний вид формы


14-1086701047
Феликс Мантилья
2004-06-08 17:24
2004.06.27
Скопировать видео с DVD





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский