Ressource entpacken



  • Ich möchte eine DLL, die die RessourceID IDR_DLL1 trägt auf
    Festplatte entpacken. Leider wird die DLL nie kopiert.
    Woran kann es liegen?

    HINSTANCE hApp = ::GetModuleHandle(0); 
    ASSERT(hApp); 
    
    HRSRC hResInfo; 
    hResInfo = ::FindResource(hApp,MAKEINTRESOURCE(IDR_DLL1),TEXT("DLL")); 
    HGLOBAL hRes = ::LoadResource(hApp, hResInfo);
    
    BYTE *PROG = (LPBYTE)::LockResource(hRes); 
    int PROG_SIZE = SizeofResource(hApp,hResInfo);
    
    CFile OutFile; 
    OutFile.Open("C:\\windows\\Cryptonicx.dll",OF_CREATE|OF_WRITE,NULL); 
    OutFile.Write(PROG,PROG_SIZE); 
    OutFile.Close();
    


  • Vielleicht hilft debuggen? Du machst in Deinem Code nirgends irgendwelche Fehler überprüfungen...



  • Ich versteh das nicht. Die DLL wird nicht genutzt, muss also auch kopierbar sein.
    Setze ich eine Exe an diese Stelle also IDR_EXE1 und "EXE", dann wird
    diese auch richtig kopiert. Nur bei den DLL-Dateien will es absolut
    nicht klappen. 🙄



  • Was wird denn für ein Fehlercode zurückgeschrieben?
    Liegt die DLL in den Ressourcen innerhalb der EXE?



  • Hallo,
    ja die DLL ist in den Ressourcen innerhalb der EXE.
    GetLastError gibt mir 6 zurück. Also wohl "error 6 = invalid handle".
    Aber wie und wo soll ich da ein ungültiges handle haben?

    Wie soll ich es sonst anstellen die DLL zu entpacken?
    Wie gesagt mit einer EXE klappt es ohne Probleme 😕



  • OF_CREATE|OF_WRITE <---- Was soll der Mist? Das sind doch Flags für die obsolete WinAPI Funktion OpenFile.



  • Jo stimmt *g* Danke.
    modeCreate etc muss ich nehmen.


Log in to reply