Ntuser.dat laden, schreiben und lesen! :/



  • Hallo!

    Ich hab mit der windows registry den ordner HKEY_CURRENT_USER exportiert,
    dateiname ntuser2.dat.

    Wie kann ich jetzt mit den Reg-Funktionen auf die Datei zugreifen? Also nicht auf die windowsregistry sondern auf die exportierte Datei mit registry werten... (exportiert als registrierungsstrukturdateien .)

    Hoffe ihr könnt mir helfen! Möchte bzw. müsste dann aus der Datei registry werte lesen und schreiben können...

    vielen danke
    mfg



  • RegLoadKey / RegUnloadKey



  • hmm ich habs schon versucht, hat allerdings nicht geklappt!

    HKEY *hKey=NULL;
    HKEY hKey2=HKEY_CURRENT_USER;
    hKey = RegLoadKey(hKey2,"console","T:\\ntusernew.dat");
    

    Wie muss ich es anstellen?

    danke



  • edit:
    int error = RegLoadKey(hKey2,"console","T:\\ntusernew.dat");

    if(error!=ERROR_SUCCESS)
    MessageBox(0,"error",0,0);

    aber es kommt eben error, so funkts nicht



  • Wie wärs wenn du den Error mal auswertest und mal sagst was das für eine ist!

    schirrmie



  • Ich bekomm so den fehler 1314:

    zitat:

    //
    // MessageId: ERROR_PRIVILEGE_NOT_HELD
    //
    // MessageText:
    //
    // A required privilege is not held by the client.
    //
    #define ERROR_PRIVILEGE_NOT_HELD 1314L

    (c) microsoft winerror.h

    ich weiß nicht aber ich wär schon admin 🙂



  • ich hab das problem nun gelöst, man musste dem programm selbst spezielle rechte geben, damit es registryfiles laden kann:

    bool SetProcRegAccessPrivs(bool bSet)
    {
    	HANDLE hCurrentToken; 
    	LUID lPriv1,lPriv2;
    	TOKEN_PRIVILEGES tpPriv;
    
    	if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hCurrentToken))
    	{
    		MessageBox(0,"Error getting Process Token","ERROR",MB_ICONERROR|MB_ICONINFORMATION);
    		return false;
    	}
    
    	if(!LookupPrivilegeValue(NULL,SE_RESTORE_NAME, &lPriv1)||!LookupPrivilegeValue(NULL,SE_BACKUP_NAME, &lPriv2))
    	{
    		MessageBox(0,"Error getting Privilege Values","ERROR",MB_ICONERROR|MB_ICONINFORMATION);
            return false;
    	}
    
    	tpPriv.PrivilegeCount = 2;
    	tpPriv.Privileges[0].Luid = lPriv1;
    	tpPriv.Privileges[1].Luid = lPriv2;
    
    	if(bSet)
    	{
            tpPriv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    		tpPriv.Privileges[1].Attributes = SE_PRIVILEGE_ENABLED;
    	}
        else
    	{
            tpPriv.Privileges[0].Attributes = 0;
    		tpPriv.Privileges[1].Attributes = 0;
    	}
    
    	if(!AdjustTokenPrivileges(hCurrentToken, FALSE, &tpPriv, 0, (PTOKEN_PRIVILEGES) NULL, 0))
    	{
    		MessageBox(0,"Error setting Privilege Values","ERROR",MB_ICONERROR|MB_ICONINFORMATION);
            return false;
    	}
    
    	return true;
    }
    

    nun funktioniert es!
    danke an alle.
    mfg



  • so nun hab ich noch ein klitzekleines Problem,
    es hat alles funktioniert, nur das RegUnLoadKey(HKEY_LOCAL_MACHINE,"temp");

    funktioniert noch nicht!?

    Error-Code ist 5:

    Zitat:
    //
    // MessageId: ERROR_ACCESS_DENIED
    //
    // MessageText:
    //
    // Access is denied.
    //
    #define ERROR_ACCESS_DENIED 5L
    (c) Microsoft

    Muss ich meinem Programm noch mehr Privilegien geben? Oder was könnte ich sonst noch versuchen?

    mfg





  • Hast Du *alle* Handles geschlossen?


Anmelden zum Antworten