Tregistry

  • Автор темы Автор темы Jeefo
  • Дата начала Дата начала
J

Jeefo

возник вопрос по работе с реестром, а именно: не пойму как возвращаться на один уровень вверх. то есть например нахожусь в ключе "HKEY_CURRENT_USER\Software\Opera Software\", а мне нужно попасть обратно в "HKEY_CURRENT_USER\Software\". как?
 
Сделать OpenKey нужного Вам ключа ...
 
ну например нахожусь я в ключе A. в этом ключе есть еще два ключа - B и C. я делаю reg.OpenKey(B, false). теперь я в ключе B. записываю какие то нужные мне данные, а теперь мне требуется попасть в ключ C. если я просто сделаю OpenKey(C, false), то программа будет искать ключ в B (то есть в том ключе, в котором я нахожусь). а мне то нужен ключ, располагающийся в A. у меня есть вариант сделать CloseKey и потом заново пройти весь путь до A, но может быть есть более простой способ? что то типа "вернуться на уровень вверх"?
 
Для: Jeefo
RTFM =RegEnumKey(Key: HKey; index: Longint; Buffer: PChar;cb: Longint): Longint;) ->index=счетчик
 
Для: root

а не могли бы вы написать какой нибудь простейший примерчик с этой функцией, например про то, что я в #3 посте сказал? а то не разберусь, как это работает :)
 
Для: Jeefo
OK
Пример не мой но суть такая
Код:
procedure TForm1.Button1Click(Sender: TObject); 
var 
MyKey: HKey; { Handle для работы с разделом } 
Buffer : array[0..1000] of char; { Буфер } 
Err, { Код ошибки } 
index : longint; { Индекс подраздела } 
begin 
Err:=RegOpenKey(HKEY_CLASSES_ROOT,'DelphiUnit',MyKey); { Открыли раздел } 
if Err<> ERROR_SUCCESS then 
begin 
MessageDlg('Нет такого раздела !!',mtError,[mbOk],0); 
exit; 
end; 
index:=0; 
{Определили имя первого подраздела } 
Err:=RegEnumKey(MyKey,index,Buffer,Sizeof(Buffer)); 
while err=ERROR_SUCCESS do { Цикл, пока есть подразделы } 
begin 
memo1.lines.add(StrPas(Buffer)); { Добавим имя подраздела в список } 
inc(index); { Увеличим номер подраздела } 
Err:=RegEnumKey(MyKey,index,Buffer,Sizeof(Buffer)); { Запрос } 
end; 
RegCloseKey(MyKey); { Закрыли подраздел } 
end;
 
Для: root
спасибо, разберусь
 
Для: Jeefo
+ в репу :)
 
вот вопр такой возник. я как понял в делфи для работы с реестром можно использовать TRegistry, TRegIniFile и еще можно пользоваться процедурами, начинающимися на Reg (ну вот RegEnumKey например, то что перед этим обсуждалось). что такое TRegistry и TRegIniFile я понимаю, это типы, можно объявлять относящиеся к ним переменные и потом использовать функции и процедуры этих типов. а вот что собой представляют функции и процедуры, начинающиеся на Reg? к чему они относятся? чем отличаются от TRegistry и TRegIniFile (вроде с ними те же функции делать можно)?
 
Функции начинающиеся на Reg - это WinAPI функции для работы с реестром (родные, так сказать, для Windows). Ну а классы в Delphi TRegistry, TRegIniFile - это т.н. классы-обертки над родными WinAPI функциями Windows.
Открой исходный код модуля Registry и увидишь, что эти классы лишь предоставляют более удобный способ работы с реестром и сами используют для доступа к реестру Reg* функции.
 
Для: Silver Wind
То бишь разница в использовании заключается лишь в удобстве для программиста? Спасибо за объяснение
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab