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

Вниз

Реестр XP   Найти похожие ветки 

 
Serge_   (2004-02-08 23:41) [0]

Проблема в следующем:
Есть некие ключи , при открытии которых
функция RegOpenKeyEx возвращает ERROR_SUCCESS
но при попытке вызвать RegEnumKeyEx возникает исключение.
СРАЗУ: это возникает не только при KEY_ALL_ACCESS но и при KEY_READ.

Я так понимаю что надо использовать функцию RegSetKeySecurity или RegGetKeyScurity чтобы пропустить этот ключ
но я не нашел документации с примерами.
Может быть кто нибудь сталкивалься с такой проблемой, подскажите решение пожалуйста.

Сергей.


 
Игорь Шевченко ©   (2004-02-09 00:17) [1]

Пример ключа в студию


 
Serge_   (2004-02-09 03:11) [2]

HKEY_LOCAL_MACHINE\SECURITY\Policy\Accounts


 
Serge_   (2004-02-09 03:14) [3]

А заодно и код:

var
 Form1: TForm1;
TotalKeys:DWORD;

implementation

{$R *.dfm}
procedure EnumAllKeys(K:HKEY;Name:string);
Label Leave;
var KK:HKEY;
Len,NumSubKeys,MaxSubKeyLen,NumValues,MaxNameValueLen,MaxValueLen:DWORD;
NumSubKeys_,i:integer;
NewName:String;
s:pchar;
x:Integer;
begin
form1.Label1.Caption:=name;
form1.Label2.Caption:=inttostr(TotalKeys);
if (totalkeys mod 50)= 0 then Application.processmessages;
Inc(TotalKeys);
x:=RegOpenKeyEx(k,Pchar(Name),0,KEY_ALL_ACCESS,kk);
if x<>ERROR_SUCCESS then Goto Leave;
//RegGetKeySecurity(kk,
x:=RegQueryInfoKey(kk,nil,nil,nil,@NumSubKeys,@MaxSubKeyLen,nil,@NumValues,@MaxNameValueLen,
@MaxValueLen,nil,nil);
Showmessage(inttostr(x));
if x<>ERROR_SUCCESS then goto Leave;
s:=VirtualAlloc(nil,Len,mem_commit,page_readwritE);
NumSubKeys_:=NumSubKeys;
for i:=0 to NumSubKeys_-1 do begin
Len:=MaxSubKeyLen + 1;
x:=RegEnumKeyEx(kk,i,Pchar(s),Len,nil,nil,nil,nil);
if x<>ERROR_SUCCESS then goto Leave;
//ShowMessage(s+Inttostr(len));
//if s="" then continue;
if Name<>"" then NewName:=Name+"\"+Pchar(S) else NewName:=Pchar(S);
EnumAllKeys(K,NewName);
end;
Leave:
RegCloseKey(kk);
VirtualFree(s,0,mem_release);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TotalKeys:=0;
EnumAllKeys(HKEY_LOCAL_MACHINE,"");

end;


 
Morfein ©   (2004-02-09 03:16) [4]

исключения в WINAPI не возникают никогда. ну если не никогда, то в 99,9% случаев точно не возникают.


 
Игорь Шевченко ©   (2004-02-09 10:13) [5]

Где анализ ошибки ?
if X <> ERROR_SUCCESS then
 ShowMessage(SysErrorMessage(X))


 
Serge_   (2004-02-10 09:19) [6]

Какой анализ????
Я говорю там исключение, исключение возникает работа функции прерывается, у тебя есть XP ??
проверь, попробуй рекурсивно просканировать реестр
(HKEY_LOCAL_MACHINE) и убедись...

Morfein - какие исключения в WINAPI, морфи ты о чем?


 
Serge_   (2004-02-10 09:22) [7]

(Морфейну) Если бы это была ошибка внутри ADVAPI.DLL
то она бы возникала и в других программах, но не возникает.
(Извини за грубый тон предыдущего сообщения.)


 
Игорь Шевченко ©   (2004-02-10 12:43) [8]

Serge_   (10.02.04 09:19)


> Какой анализ????
> Я говорю там исключение, исключение возникает работа функции
> прерывается, у тебя есть XP ??
> проверь, попробуй рекурсивно просканировать реестр
> (HKEY_LOCAL_MACHINE) и убедись...


Regedit же нормально все ключи открывает. В чем мне надо убеждаться ?
Приводишь конкретный пример ключа и конкретную строчку кода, при выполнении которой возникает исключение, предварительно сам смотришь отладчиком, не передаешь ли ты в функцию недопустимые параметры.
Я за тебя отладчиком работать не собираюсь.


 
BiN ©   (2004-02-10 12:53) [9]

а тут и без отладчика все ясно

поставь Len:=MaxSubKeyLen + 1;
до
s:=VirtualAlloc(nil,Len,mem_commit,page_readwritE);


 
Игорь Шевченко ©   (2004-02-10 13:16) [10]

BiN ©   (10.02.04 12:53)

И не лень в чужом коде компилятором работать ? :)


 
BiN ©   (2004-02-10 13:17) [11]

да это на глаз было трудно не заметить :)



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

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

Наверх




Память: 0.49 MB
Время: 0.046 c
4-1076490186
comwad
2004-02-11 12:03
2004.04.18
Привлечение внимания пользователя к приложению


11-1063190352
<Falcon>
2003-09-10 14:39
2004.04.18
Хелп! Не компайлится KOLReport под D7


3-1079670894
Сказочник
2004-03-19 07:34
2004.04.18
Два SELECTа подряд......


14-1080169387
dr Tr0jan
2004-03-25 02:03
2004.04.18
Почему Муз-ТV вещает в PAL, а MAXIMUM закрыли?


7-1076502609
alex_24
2004-02-11 15:30
2004.04.18
Свертывание формы