Guten Tag Leute,
mit der TRegistry Methode
bool __fastcall SaveKey(const AnsiString Key, const AnsiString FileName);
habe ich ein Problem, nämlich: es wird einfach nichts in einer Datei gespeichert, obgleich ich die entsprechenden Prozeßprivilegien setze!
Das Setzen der Prozeßprivilegien erfolgt in 3 Schritten mit den Windows API Funktionen
OpenProcessToken()
LookupPrivilegeValue() und
AdjustTokenPrivileges()
Alle 3 Funktionen geben einen Wert > 0 zurück, müßten also erfolgreich abgearbeitet worden sein. Es gelingt aber nicht, den Schlüssen mit seinen Unterschlüsseln und Werten in einer Datei zu sichern. Die Registry Methode SafeKey() gibt nach dem Aufruf immer "false" zurück! Es wurde zwar eine Datei "Test.sav" auf dem entsprechenden Directory erzeugt, diese ist aber leer!.
<pre>
bool __fastcall TOEBForm::StoreRegKey(void)
{
AnsiString Key;
bool Flg = false;
TOKEN_PRIVILEGES TokPriv;
HANDLE hTok;
if (!OpenProcessToken (GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES, &hTok))
{
if(!LookupPrivilegeValue(NULL, SE_BACKUP_NAME,
&TokPriv.Privileges[0].Luid))
{
TokPriv.PrivilegeCount = 1;
TokPriv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hTok, FALSE, &TokPriv,
sizeof(TOKEN_PRIVILEGES), NULL, NULL))
{
Reg->RootKey = HKEY_CURRENT_USER;
Key = "Identities\\{C9880119-9A13-4487-91D8-1615083B4B19}"
"\\Software\\Microsoft\\Internet Account Manager";
if (Reg->KeyExists(Key))
{
if (FileExists("D:\\TestPfad\\Test.sav");
DeleteFile("D:\\TestPfad\\Test.sav");
// Sicherung des Schlüssels
if (Reg->SaveKey(Key, "D:\\TestPfad\\Test.sav"))
Flg = true;
}
}
}
}
return Flg;
}
</pre>
Kann mir jemand helfen? Was mache ich da falsch?
Thaddaeus.
mit der TRegistry Methode
bool __fastcall SaveKey(const AnsiString Key, const AnsiString FileName);
habe ich ein Problem, nämlich: es wird einfach nichts in einer Datei gespeichert, obgleich ich die entsprechenden Prozeßprivilegien setze!
Das Setzen der Prozeßprivilegien erfolgt in 3 Schritten mit den Windows API Funktionen
OpenProcessToken()
LookupPrivilegeValue() und
AdjustTokenPrivileges()
Alle 3 Funktionen geben einen Wert > 0 zurück, müßten also erfolgreich abgearbeitet worden sein. Es gelingt aber nicht, den Schlüssen mit seinen Unterschlüsseln und Werten in einer Datei zu sichern. Die Registry Methode SafeKey() gibt nach dem Aufruf immer "false" zurück! Es wurde zwar eine Datei "Test.sav" auf dem entsprechenden Directory erzeugt, diese ist aber leer!.
<pre>
bool __fastcall TOEBForm::StoreRegKey(void)
{
AnsiString Key;
bool Flg = false;
TOKEN_PRIVILEGES TokPriv;
HANDLE hTok;
if (!OpenProcessToken (GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES, &hTok))
{
if(!LookupPrivilegeValue(NULL, SE_BACKUP_NAME,
&TokPriv.Privileges[0].Luid))
{
TokPriv.PrivilegeCount = 1;
TokPriv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hTok, FALSE, &TokPriv,
sizeof(TOKEN_PRIVILEGES), NULL, NULL))
{
Reg->RootKey = HKEY_CURRENT_USER;
Key = "Identities\\{C9880119-9A13-4487-91D8-1615083B4B19}"
"\\Software\\Microsoft\\Internet Account Manager";
if (Reg->KeyExists(Key))
{
if (FileExists("D:\\TestPfad\\Test.sav");
DeleteFile("D:\\TestPfad\\Test.sav");
// Sicherung des Schlüssels
if (Reg->SaveKey(Key, "D:\\TestPfad\\Test.sav"))
Flg = true;
}
}
}
}
return Flg;
}
</pre>
Kann mir jemand helfen? Was mache ich da falsch?
Thaddaeus.
Comment