Hallo,
ich hab folgendes Problem:
Ich möchte eine REG-Datei in die Registry in einem von mir festgelegten Pfad importieren.
Dazu lege ich mit RegCreateKey einen Unterschlüssel an (funktioniert), unter dem die Daten
aus der Reg-Datei importiert werden sollen.
Zum Importieren selbst verwende ich Luckie's routine "RegLoadKeyFromFile" (leicht abgewandelt, so
das er auf NT-Systemen auch RegLoadkey verwendet, statt regrestorekey).
Delphi-Quellcode:
function RegLoadKeyFromFile(Key: HKEY;
const SubKey, Filename:
string): DWORD;
const
SE_BACKUP_NAME = '
SeBackupPrivilege';
SE_RESTORE_NAME = '
SeRestorePrivilege';
var
PrevBackup: Boolean;
PrevRestore: Boolean;
KeyHandle: HKEY;
ShortName:
array[0..MAX_PATH]
of Char;
begin
Result := SetPrivilege(SE_BACKUP_NAME, True, PrevBackup);
if (Result = ERROR_SUCCESS)
then
try
Result := SetPrivilege(SE_RESTORE_NAME, True, PrevRestore);
if (Result = ERROR_SUCCESS)
then
try
if (GetVersion() > $80000000)
then
begin // Win9x (FIXME: Test it! - and see RegReplaceKey)
if (GetShortPathName(PChar(Filename), ShortName, MAX_PATH) = 0)
then
Result := GetLastError()
else
Result := RegLoadKey(Key, PChar(SubKey), ShortName);
end
else
begin // WinNT (FIXME: Load RegRestoreKey dynamically!)
KeyHandle := 0;
Result := RegOpenKeyEx(Key, PChar(SubKey), 0, MAXIMUM_ALLOWED, KeyHandle);
if (Result = ERROR_SUCCESS)
then
try
Result := RegLoadKey(KeyHandle, pchar(SubKey),PChar(Filename));
finally
RegCloseKey(KeyHandle);
end;
end;
finally
if (
not PrevRestore)
then
SetPrivilege(SE_RESTORE_NAME, PrevRestore, PrevRestore);
end;
finally
if (
not PrevBackup)
then
SetPrivilege(SE_BACKUP_NAME, PrevBackup, PrevBackup);
end;
end;
Allerdings bekomme ich die Fehlermeldung zurück, das das Format der Reg-Datei nicht stimmen
würde. Und das mit einer Reg-Datei die ich vorher mit Regedit exportiert hab ??????
Daraufhin hab ich einige Tests gemacht.
Zuerst hab ich in der Reg-Datei die Schlüssel so angepasst, das sie auf den neuen Schlüssel
passen (HKEY_xxxx durch meinen Pfad ersetzt). -> Gleicher Fehler
Dann einfach nur HKEY_xxxx aus den Key's entfernt. -> Gleicher Fehler.
Woran kann das liegen ????