Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

проблемы с реестром, кто силён помогите, пожалуйсто   Найти похожие ветки 

 
ctranik   (2005-05-27 15:52) [0]

Всем привет
тут такое дело , хочу просканировать реестр для того чтобы найти интересующий меня ключ.
но почему-то некоторые ключи моя прога неоткрывает (это и есть моя проблема).

Код модуля "Форма" :
ScanKey- это подпрограмма.

unit FindKey;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls,Registry;

type
 TForm2 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;
 RegFind: TRegistry;
 sskey,skey:tstringlist;
implementation

{$R *.dfm}
uses unit1,podprogramy;

procedure TForm2.Button1Click(Sender: TObject);
const findkey="FlashGet";
var
Hk:array[0..4]of Cardinal;
u:hkey;
i,z:integer;
f,s:string;
begin
hk[0]:=HKEY_LOCAL_MACHINE; hk[1]:=HKEY_Current_User; hk[2]:=HKEY_Classes_Root;
hk[3]:=HKEY_Users; hk[4]:=HKEY_Current_Config;

for z:=0 to 4 do begin
RegFind.RootKey := HK[z];
if RegFind.OpenKeyReadOnly(regfind.CurrentPath) then begin
   RegFind.GetKeyNames(SKey);
   s:=convert(regfind.RootKey);
   u:=RegFind.RootKey;
   regFind.CloseKey;
end; //if

 for i:=0 to skey.Count-1 do begin
  f:=s+"\"+skey.Strings[i];
  if pos(findkey,skey.Strings[i])>0 then memo1.Lines.add(f);
  scankey(u,skey.Strings[i],findkey,SSKey);
  memo1.Lines.AddStrings(SSKey);
 end;//for

end; //for

end;

procedure TForm2.FormCreate(Sender: TObject);
begin
skey:=tstringlist.Create;
sskey:=tstringlist.Create;
RegFind := TRegistry.Create;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
RegFind.Free;
skey.Free;
sskey.Free;
end;

end.



а это код отдельного модуля, где хранится подпрограммы


unit Podprogramy;

interface
uses Windows,Classes,SysUtils,StdCtrls,Dialogs, Registry,FindKey;

procedure ScanKey(RK:HKey;CK,TargetKey:string;var OutList:TstringList);

function Convert(w:hkey):string;

implementation

procedure ScanKey(rk:HKey;CK,TargetKey:string;var OutList:TstringList);
var
j:integer;
t,b:string;
listkey:tstringlist;
reestr:Tregistry;
begin
reestr:=TRegistry.Create;
listkey:=tstringlist.Create;

reestr.RootKey:=rk;

if reestr.OpenKeyReadOnly(CK) then begin
if reestr.HasSubKeys=true then  reestr.GetKeyNames(ListKey);
reestr.CloseKey;
end//if
else showmessage("немогу открыть ключ "+CK);

for j:=0 to listkey.Count-1 do begin
  b:=convert(rk)+"\"+CK+"\"+listkey.Strings[j];
  t:=ck+"\"+listkey.Strings[j];
  if pos(targetkey,listkey.Strings[j])>0 then Outlist.Add(b);
  scankey(reestr.RootKey,t,targetkey,OutList);
end;//for
reestr.Free;
listkey.Free;
end;

function Convert(w:hkey):string;
begin
case w of
HKEY_LOCAL_MACHINE : Convert:="HKEY_LOCAL_MACHINE";
HKEY_Current_User  : Convert:="HKEY_Current_User";
HKEY_Classes_Root  : Convert:="HKEY_Classes_Root";
HKEY_Users         : Convert:="HKEY_Users";
HKEY_Current_Config: Convert:="HKEY_Current_Config";
end;
end;

end.

Попробуйте скомпилить эту прогу, и вы всё сами увидите

Заранее благодарен


 
Andy BitOff ©   (2005-05-27 15:58) [1]

Извините пожалуйста, но не моглибы Вы хотябы в кратце описать, что "Попробуйте скомпилить эту прогу, и вы всё сами увидите" мы там увидим? А то нет возможности, на данный момент, воспользоваться Delphi.



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

Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.042 c
14-1116854832
msguns
2005-05-23 17:27
2005.06.14
Ну как дети малые...


9-1110457042
qwe
2005-03-10 15:17
2005.06.14
Ламерсий вопрос по GlScene


1-1117517605
Grach
2005-05-31 09:33
2005.06.14
Сжатие файлов (преобразование Фурье)


6-1110720210
DereckWhite
2005-03-13 16:23
2005.06.14
API для работы с сетью


14-1117095750
Игорь Шевченко
2005-05-26 12:22
2005.06.14
Восстановление ветки "Двойные стандарты"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский