Chemin d'une DLL

Résolu
cs_JeTrouvePasDePseudo Messages postés 11 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 23 janvier 2006 - 24 août 2005 à 15:58
cs_JeTrouvePasDePseudo Messages postés 11 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 23 janvier 2006 - 25 août 2005 à 09:45
Bonjour,

J'ai une DLL toto.dll qui existe dans plusieurs répértoires sur mon disque. Elles ont toutes étaient enregistré avec Regsvr32.

J'ai un exe Toto.exe qui utilise une dll Toto.dll. Cette dll n'est dans aucun folder System, ni dans le folder de l'exe.

Question : Quel est le chemin de la dll qui est utilisé dans mon soft ?

Merci

5 réponses

cs_franckydeluka Messages postés 228 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 4 janvier 2008 1
24 août 2005 à 17:32
Salut,

Voici la séquence de recherche effectué par Windows pour trouver une DLL :







1) Il examine le dossier contenant le fichier EXE.


2) Il examine le dossier courant du processus.


3) Il examine le dossier système de Microsoft Windows.


4) Il examine le dossier de Microsoft Windows.

5) Il examine les dossiers énumérés dans la variable d’environnement « Path ».

il faut faire gaffe à bien référencer ta dll sinon windows risque de prendre une mauvaise version de cette dernière. si elle sont correctement enregistrées tu devrais les voir dans les références de ton projet VB.



Deluka.
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2005 à 21:55
Cet ordre de recherche est celui pour les vraies DLLs API, un ActiveX a une inscription 'InprocServer32' dans la BDR et Win se sert de cela.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2005 à 09:26
Ta dll est en fait un ActiveX.

On recherche le nom de la classe que tu vas utiliser:
Exemple avec "ADODB.Command"
On récupère d'abord le GUID (qui est une chaine représentant une structure sur 128 bits):
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ADODB.Command\CLSID
et à ce point on peut lire l'InprocServer32, suffit de chainer:
HKEY_CLASSES_ROOT\CLSID\{00000507-0000-0010-8000-00AA006D2EA4}\InprocServer32

ciao...
BruNews, MVP VC++
3
cs_JeTrouvePasDePseudo Messages postés 11 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 23 janvier 2006
25 août 2005 à 09:02
Ce n'est pas la réponse que j'attendais... Je complète ma question...

En fait, cette DLL n'est pas dans un folder système, pas dans le répértoire courant, ni dans aucun chemin pointé par le PATH. Donc, l'EXE n'a aucun moyen de localiser la dll. Par contre, elle est enregistré dans la registry avec REGSVR32 (du coup, c'est peut être un ActiveX, mais je n'en sais rien.), et du coup, l'EXE la trouve, c'est magique :)

Ma question est : comment fait l'exe pour savoir quel DLL il doit utiliser.

Donc, en code, je cherche à écrire la fonction qui en entrer prend le nom de la DLL = "TOTO.DLL", va chercher dans la registry, et me retourne le chemin de la dernière version enregistré par RegSvr32.

Pour répondre en même temps à BruNews, comment trouver la signature InProcServer32 à partir du nom de la dll.

Merci :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JeTrouvePasDePseudo Messages postés 11 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 23 janvier 2006
25 août 2005 à 09:45
Nickel, c'est exactement ce que je cherchais...

Merci beaucoup :)))))))))))))))))
0
Rejoignez-nous