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

Вниз

Реестр 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.032 c
1-1080420635
Vadim
2004-03-27 23:50
2004.04.18
Как сделать замену символов в TRichEdit ?


3-1079938024
Лысый
2004-03-22 09:47
2004.04.18
Вопрос по Distinct


7-1077001550
Фикус
2004-02-17 10:05
2004.04.18
NT и HDD


8-1070778728
intell
2003-12-07 09:32
2004.04.18
Как мне сделать Image полупрозрачным?


4-1076939282
sucer
2004-02-16 16:48
2004.04.18
Как из DELPHI открыть *.htm файл в новом окне IE?





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