Главная страница
    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.028 c
14-1080042117
gty
2004-03-23 14:41
2004.04.18
Как в excel преобразовать столбец в строку?


14-1079637216
RealRascal
2004-03-18 22:13
2004.04.18
Опять про моргание мониторов


1-1080657596
новичок_из_сыктывкара
2004-03-30 18:39
2004.04.18
Проверить пустая ли строка???


3-1080117156
Шурик Ш
2004-03-24 11:32
2004.04.18
Не получается создать числовое поле заданной точности!


1-1080403405
TankMan
2004-03-27 19:03
2004.04.18
Много вопросов по компонентостроительству....





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