Ecriture dans des resources

Signaler
Messages postés
452
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour à tous,

Je cherche actuellement à modifier le contenu des ressources de mon executable, et ce à partir de cet executable.
Je cherche à écrire le chemin d'accès à une dll dans mes ressources, .et lors du prochain démarrage de l'applicatif à le lire.

Je n'ai pas de problèmes pour lire la valeur dans les ressources, mais je n'arrive pas à la modifier:
Voici mon code:

hRes = BeginUpdateResource(_T(".\\SVNLISTER.exe"), FALSE);
if (hRes != NULL)
{
       BOOL b;
       DWORD dwErr;
       TCHAR *pData;

       b = UpdateResource(hRes, _T("LANG"), MAKEINTRESOURCE(IDR_LANG), 1252, pLang->path, (lstrlen(pLang->path) + 1) * sizeof(TCHAR));
       dwErr = GetLastError();
       b=EndUpdateResource(hRes, FALSE);
       dwErr = GetLastError();
}

Je rentre bien dans le if, b vaut 1 et dwErr 0 après chaque appel de fonction.
Merci pour vos pistes.

--Vive le CSavon

1 réponse

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Normalement, il est impossible de modifier un exécutable en cours d'exécution. C'est d'ailleurs précisé dans MSDN que la mise à jour des ressources d'un exécutable ne peut se faire qu'à partir d'un autre exécutable. L'exécutable père peut donc, avant de se fermer, lancer l'exécutable fils en lui passant des paramètres. Ce dernier attendra que le père soit effectivement fermé pour mettre à jour les ressources voulues, puis, avant de se fermer à son tour, il relance l'exécutable père. Ce dernier aura ses ressources mises à jour. Cette méthode n'est utile que si on n'a pas d'autres choix.
Tu ne veux pas mettre ta DLL dans le dossier system32?
Tu ne veux pas utiliser la base de registre ou un fichier externe à l'exécutable?