windows - Hvordan i c + + builder eksport registreringsdatabasen til * .reg fil?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger reg-> SaveKey ('Software', 'D: \ 1.reg'). Men at få en tom fil uden data.


void \_\_fastcall TForm1::Button2Click(TObject *Sender)
{
      TRegistry *reg=new TRegistry(KEY\_READ);
      reg->RootKey=HKEY\_LOCAL\_MACHINE;
      reg->OpenKey("Software",0);;
      reg->SaveKey("Software","D:\1.reg");
      delete reg;

}

Bedste reference


SaveKey er en løs indpakning omkring RegSaveKey(), hvis dokumentation hedder: [9]



  Opkaldsprocessen skal have SE\_BACKUP\_NAME privilegiet aktiveret. Se Running with Special Privileges for at få flere oplysninger.



Bruger tokens har normalt ikke SE\_BACKUP\_NAME privilegiet aktiveret. For at opfylde dette krav skal du:



  1. Kør som administrator.

  2. Tilføj SE\_BACKUP\_NAME privilegiet til dit brugertegn.



Det andet krav, du skal overholde, er at outputfilen ikke må eksistere før du ringer til SaveKey.


Se denne EDN-artikel for C ++-kode, der illustrerer metoden. [10]

Andre referencer 1


Næste variant arbejdede!


void \_\_fastcall TForm1::Button2Click(TObject *Sender)
{
TRegistry *reg=new TRegistry(KEY\_READ);
HANDLE ProcessToken;

if (OpenProcessToken(GetCurrentProcess(), TOKEN\_ADJUST\_PRIVILEGES | TOKEN\_QUERY, &ProcessToken))
{
    SetPrivilege(ProcessToken, SE\_BACKUP\_NAME, TRUE);
          TRegistry *reg=new TRegistry(KEY\_READ);
      reg->RootKey=HKEY\_LOCAL\_MACHINE;
      reg->SaveKey("Software","D:\1.reg");
      delete reg;
}



}