Lorsque vous enregistrez un DLL sur d'anciennes machines (Windows XP), regsrv indique toujours que l'enregistrement a réussi. Cela se produit même si l'utilisateur n'a pas l'autorisation de s'enregistrer.
Avec le nom de la DLL, existe-t-il une commande que je peux exécuter sur la ligne de commande pour vérifier si un DLL est installé?
J'ai trouvé ce lien: Comment puis-je savoir si un DLL a été enregistré? :
Étant donné que DLL l'enregistrement peut englober des opérations arbitraires, il n'existe aucun moyen général de déterminer si l'enregistrement a eu lieu pour une DLL arbitraire.
Pour déterminer si un DLL a été enregistré, vous devez apporter des connaissances spécifiques au domaine. Si vous savez qu'un DLL enregistre un objet COM avec un particulier CLSID, vous pouvez vérifier si ce CLSID est bien enregistré.
OK, c'est impossible, mais les DLL s'enregistrent généralement en créant une entrée dans le registre. Une solution de contournement consiste à:
reg query HKCR\CLSID | find /i "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"
Une meilleure réponse me permettrait de trouver le GUID directement à partir du fichier avant qu'il ne soit enregistré. Au moins de cette façon, vous pouvez créer un script à installer et vérifier s'il a été installé avec succès.
Je devais vérifier si un DLL avec un nom particulier est enregistré et j'ai utilisé cette commande dans ma BAT:
reg query HKLM\SOFTWARE\Classes /s /f whatever.dll
if errorlevel 1 goto DLL_MISSING
Si, avec errorlevel, le contrôle est envoyé à l'étiquette quand _ reg query
rien trouvé. Vous devrez peut-être modifier la partie du registre dans laquelle vous effectuez une recherche (dans mon cas, HKLM'...
, le chemin le plus spécifique le plus rapide, sinon cela prend très longtemps).
La sortie peut être traitée si nécessaire, GUID pour l'entrée peut être obtenue, mais cela est hors de portée de la commande de requête reg.
Pour trouver des entrées de registre (et éventuellement des objets COM) pour un DLL depuis la ligne de commande, une combinaison des réponses de @ virgo47 et @neves a fonctionné le mieux pour moi.
requête de reg HKLM\SOFTWARE\Classes/s/f quel que soit.dll
/s /f "{GUID}"
devrait être plus rapide que | findstr /i "{GUID}"
. Et | find /i "{GUID}"
semble être une faute de frappe (mais je ne peux pas encore écrire de commentaires sur Serverfault).) requête de reg HKCR\CLSID/s/f "{9F3DBFEE-FD77-4774-868B-65F75E7DB7C3}"