Здравствуйте, Sage Hermit, Вы писали:
SH>Как определить, что имеется доступ к определенному ключу реестра, причем
SH>если ключа не существует, можно ли его создать (т.е. есть ли такие права) ?
SH>Желательно на примере (Delphi)...
Попытайся получить этот доступ. Если получилось — все Ок. Если нет — то должен вылететь ERegistryException. В нем ErrorCode есть? Если нету, то смотри GetLastError().
... << RSDN@Home 1.1 beta 2 >>
Hello, Sage!
You wrote on Sun, 16 Nov 2003 16:44:43 GMT:
SH> Как определить, что имеется доступ к определенному ключу реестра,
SH> причем если ключа не существует, можно ли его создать (т.е. есть ли
SH> такие права) ? Желательно на примере (Delphi)...
uses
Registry;
var
reg : TRegistry;
begin
reg := TRegistry.Create; //Создаём
reg.RootKey := HKEY_LOCAL_MACHINE; //Устанавлеваем корневую ветку
if not reg.OpenKey ('Software\Microsoft\Windows', true) then //Пытаемся открыть и если нет, то создать
begin
ShowMessage ('Не удалось открыть/создать ключ. Вероятно доступ read only.');
end;
reg.Free;
end;
Ногами не бить... Код написан прям в редакторе, по памяти, без тестов...
Так что если название методов не совпадет чуть-чуть — поправишь...
---
С уважением, Струков Илья.
E-mail : lnking@mail.ru
ICQ : 17170362
Posted via RSDN NNTP Server 1.7 "Bedlam"
Здравствуйте, Львёнок, Вы писали:
Лё> if not reg.OpenKey ('Software\Microsoft\Windows', true) then //Пытаемся открыть и если нет, то создать
Sorry, не совсем корректно объяснил, в чем проблема. Нужно просто проверить, имеется ли ПОЛНЫЙ доступ к разделу, а если его нет, то МОЖНО ли его создать (не создавая), т.е. имеются ли ТАКИЕ ПРАВА ! Просто проверка, не изменяя ничего в реестре !
Говорят, можно с помощью функции RegQueryInfoKey это выяснить, но я что-то не понял, как её использовать...