{------------------------------------------------------------------------------} { Unit Name: GetRegRoot Purpose : To get the registry root key Author : Vesa Lappalainen Date : 5.1.2001 Changed : ToDo : function GetRoot(var st:string) : HKEY; - separate Root-part from Registry-string. Default is HKEY_CURRENT_USER Key can be any of following: ( k: HKEY_LOCAL_MACHINE ; s : 'HKEY_LOCAL_MACHINE' ), ( k: HKEY_CLASSES_ROOT ; s : 'HKEY_CLASSES_ROOT' ), ( k: HKEY_CURRENT_USER ; s : 'HKEY_CURRENT_USER' ), ( k: HKEY_USERS ; s : 'HKEY_USERS' ), ( k: HKEY_CURRENT_CONFIG ; s : 'HKEY_CURRENT_CONFIG' ), ( k: HKEY_DYN_DATA ; s : 'HKEY_DYN_DATA' ), ( k: HKEY_LOCAL_MACHINE ; s : 'HKLM' ), ( k: HKEY_CLASSES_ROOT ; s : 'HKCR' ), ( k: HKEY_CURRENT_USER ; s : 'HKCU' ), ( k: HKEY_USERS ; s : 'HKU' ), ( k: HKEY_CURRENT_CONFIG ; s : 'HKCC' ), ( k: HKEY_DYN_DATA ; s : 'HKDD' ), ( k: HKEY_LOCAL_MACHINE ; s : 'Machine' ), ( k: HKEY_CURRENT_USER ; s : 'User' ), ( k: HKEY_USERS ; s : 'Users' ) F.ex s := 'HKCU\software\kave\IniTest'; h := GetRoot(s) => h := HKEY_CURRENT_USER and s := software\kave\IniTest } {------------------------------------------------------------------------------} unit GetRegRoot; interface uses Registry,Windows; function GetRoot(var st:string) : HKEY; implementation {------------------------------------------------------------------------------} type TKey = record k : HKEY; s : string; end; const KEYNR = 6+6+3; Type TKeys = Array [1..KEYNR] of TKey; {------------------------------------------------------------------------------} const Keys : TKeys = ( ( k: HKEY_LOCAL_MACHINE ; s : 'HKEY_LOCAL_MACHINE' ), ( k: HKEY_CLASSES_ROOT ; s : 'HKEY_CLASSES_ROOT' ), ( k: HKEY_CURRENT_USER ; s : 'HKEY_CURRENT_USER' ), ( k: HKEY_USERS ; s : 'HKEY_USERS' ), ( k: HKEY_CURRENT_CONFIG ; s : 'HKEY_CURRENT_CONFIG' ), ( k: HKEY_DYN_DATA ; s : 'HKEY_DYN_DATA' ), ( k: HKEY_LOCAL_MACHINE ; s : 'HKLM' ), ( k: HKEY_CLASSES_ROOT ; s : 'HKCR' ), ( k: HKEY_CURRENT_USER ; s : 'HKCU' ), ( k: HKEY_USERS ; s : 'HKU' ), ( k: HKEY_CURRENT_CONFIG ; s : 'HKCC' ), ( k: HKEY_DYN_DATA ; s : 'HKDD' ), ( k: HKEY_LOCAL_MACHINE ; s : 'Machine' ), ( k: HKEY_CURRENT_USER ; s : 'User' ), ( k: HKEY_USERS ; s : 'Users' ) ); {------------------------------------------------------------------------------} function GetRoot(var st:string) : HKEY; var i,p : integer; rt : string; begin Result := HKEY_CURRENT_USER; if ( st = '' ) then exit; if ( st[1] = '\' ) then Delete(st,1,1); p := Pos('\',st); if ( p = 0 ) then exit; rt := copy(st,1,p-1); for i:=1 to KEYNR do if ( rt = Keys[i].s ) then begin delete(st,1,p); Result := Keys[i].k; exit; end; end; end.