![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разница в написании - доступ к Реестру. [D5, D6, Win2k, WinXP]
Bers © (2003-11-24 11:14:00)
Доброго времени суток!
Уважаемые Мастера, подскажите, если кто знает:
при использованииTRegistry.KeyExistsключи находятся во всех ветках реестра, а если пользоватьсяRegOpenKeyExс параметрами доступа:
STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS(Теже что используются в KeyExists (registry.pas)), то успешный поиск идет только по ветке реестраHKEY_CLASSES_ROOTа во всех остальных случаях возвращается значение 161. Почему так?
Заранее благодарен!
С Уважением, Андрей.
Bers (2003-11-24 12:32:00) [1]
Нет я разобрался, бага не в этом была: просто в параметре Keyу меня был указан первый символ "\" так как я в KeyExists указывал, а его там быть не должно!
Правда непонятно почему тогда работало с HKCR?????? :( нда загадочное ето дело - программирование :).
Все равно всем спасибо.
clickmaker (2003-11-24 12:14:00) [2]
Попробуй указать одну KEY_READ в качестве доступа
Bers (2003-11-24 11:53:00) [3]
Что-то типа:
SRoot, Key - читается из файла(строка)
var Root:HKEY;
if SRoot="HKCR" then Root:=HKEY_CLASSES_ROOT;
if SRoot="HKCU" then Root:=HKEY_CURRENT_USER;
if SRoot="HKLM" then Root:=HKEY_LOCAL_MACHINE;
if SRoot="HKUS" then Root:=HKEY_USERS;
if SRoot="HKCC" then Root:=HKEY_CURRENT_CONFIG;
if (Root<=0) OR (Key="") then
begin
result:=False;
exit;
end;
tmpres:=FALSE;
Err:=0;
MK:=0;
Err:=RegOpenKeyEx(Root,PChar(Key),0,
STANDARD_RIGHTS_READ or
KEY_QUERY_VALUE or
KEY_ENUMERATE_SUB_KEYS,
MK);
if Err=ERROR_SUCCESS
then begin ... end
else begin ... end;
Есть соображения?
С Уважением, Андрей.
clickmaker (2003-11-24 11:41:00) [4]
161 - это типа неверный путь. Код поиска приведи, может понятней будет