Главная страница
    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.039 c
4-1113892854
Упсс
2005-04-19 10:40
2005.06.14
Уникальный Explorer


14-1116761908
Alx2
2005-05-22 15:38
2005.06.14
Задачка о системах выборов и голосования


1-1117114722
M_a_r_i_n_a
2005-05-26 17:38
2005.06.14
Адреса ячеек в Ворде


10-1094198797
Ragazor
2004-09-03 12:06
2005.06.14
1с & Delphi


1-1117423021
FANAT
2005-05-30 07:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский