Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Работаем с реестром


Автор: Teran 19.4.2006, 15:39
Помогите 
как по дескриптору ключа реестра получить путь этого ключа в строковом виде
(нужны не дочерние ключи а именно все родители)
иными словами HKEY TO STRING
 smile  smile  smile   


M
Girder
А что мы свои темы забываем? http://forum.vingrad.ru/index.php?showtopic=87545
И дубли плодим? + Название темы не отражает сути!
PS: Тема закрыта!
  

Автор: Rouse_ 19.4.2006, 15:58
RegQueryInfoKey 

Автор: Teran 19.4.2006, 16:00
Цитата(Rouse_ @  19.4.2006,  15:58 Найти цитируемый пост)
RegQueryInfoKey  


он покажет только дочерние ключи а родителей нет?



 

Автор: x77 19.4.2006, 16:27
Цитата("F1")

Indicates the registry path associated with the current key.

Delphi syntax:

property CurrentPath: String;

C++ syntax:

__property AnsiString CurrentPath = {read=FCurrentPath};

Description

Use CurrentPath to determine the registry path of the current key. The system registry is hierarchical, and CurrentPath returns a string that spells out the hierarchy of keys from the root key to the current key, inclusive. 

CurrentPath is automatically reset each time a different key becomes the current key.


Добавлено @ 16:28 
т.е. "по дескриптору ключа" это ключ сначала делаем текущим, а потом вытаскиваем инфу. 

Автор: Teran 19.4.2006, 16:37
Цитата(x77 @  19.4.2006,  16:27 Найти цитируемый пост)
CurrentPath


не подойдет я имею дело с апи функциями и к тому же одновременно может быть открыто несколько дескрипторов (HKEY) а CurrentPath запоминает только последний 

Автор: Rouse_ 19.4.2006, 17:06
Цитата(Teran @  19.4.2006,  17:00 Найти цитируемый пост)
он покажет только дочерние ключи а родителей нет?

Второй и третий параметры функции... 

Автор: Teran 19.4.2006, 17:32
Цитата(Rouse_ @  19.4.2006,  17:06 Найти цитируемый пост)
Второй и третий параметры функции... 


я вроди пытался в эти параметры вьехать  smile  но ничего не получилось 

Расскажи пожалуйста поподробней  smile  

Автор: Nickel 19.4.2006, 21:02
Native API тебе в помощь:
Код

function ZwQueryObject(ObjectHandle: THandle;
  ObjectInformationClass: integer; ObjectInformation:Pointer;
  Length: ULONG; ReturnLength: PULONG): cardinal; stdcall;
  external 'ntdll.dll';
type

TUnicodeString = packed record
    Length: Word;
    MaximumLength: Word;
    Buffer: PWideChar;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Key:hkey;
    p:pointer;
    s:string;
begin
GetMem(p,max_path);
RegOpenKeyEx(HKEY_USERS, '.DEFAULT', 0, KEY_READ, Key);
ZwQueryObject(Key,1,p,max_path,nil);
s:=WideCharToString(TUnicodeString(p^).Buffer);
MessageBox(0,pchar(s),'',0);
end;

Например так. Хотя при использовании Native API возникают некоторые сложности, например тебе придётся привыкнуть, что \REGISTRY\USER\ это HKEY_USERS и тп 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)