Outil de ligne de commande pour vidage de Windows DLL de la version?
J'ai besoin d'un outil de ligne de commande pour vidage standard de Windows DLL de la version d'infos afin que je puisse les traiter par le biais d'un script bash (Cygwin).
En tant que développeur Java, je ne suis pas très utilisé pour des outils de développement Microsoft (bien que j'ai un peu d'expérience avec Microsoft Embedded Visual C++ 4.0 et Microsoft Visual Basic 6.0).
L'outil approprié semble être mt.exe, comme a déclaré sur DONC. Toutefois, la seule chance que j'ai trouvé pour obtenir cette petite application est à télécharger un 1.29 GO ISO de la Windows SDK pour Windows Server 2008 et .NET Framework. Je ne peux pas croire que c'est la seule façon de le faire.
J'ai aussi trouvé une petite application sur Internet appelé PEView, mais il affiche trop (et inutile dans mon cas) et c'est pas une application en ligne de commande.
Standard objdump regroupés à l'intérieur de Cygwin peut vider également quelques informations sur les fichiers DLL, mais je ne vois pas l'option pour vider la version de la DLL. Notez que MajorImageVersion, MinorImageVersion et d'autres champs de l'objet de dumping par cet outil (avec l'option-p) ne sont pas liées à la propre version de la DLL.
Les solutions de rechange à propos de quoi faire? Peut-être que j'ai manqué quelque objdump option? Est mt.exe mon seul choix? Si c'est le cas, est-il possible de le faire séparément à partir de Windows SDK?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également regarder filever.exe, qui peut être téléchargé dans le cadre de la Support de Windows XP SP2 Outils paquet - 4,7 MO de téléchargement.
sigcheck
(comme uvts_cvs mentions) montre que les, et il est lourd à télécharger.Vous pouvez utiliser PowerShell pour obtenir les informations que vous souhaitez.
Par défaut, cette valeur d'affichage ProductVersion et FileVersion
Mais l'ensemble de la VERSIONINFO est disponible. I. e. de retour des Commentaires
powershell -command (Get-Item C:\Path\To\MyFile.dll).VersionInfo
Utilisation Microsoft Sysinternals Sigcheck.
Cet exemple de sorties tout simplement la version:
Déballé sigcheck.exe est seulement 228 KO.
Vous pouvez écrire un script VBScript pour obtenir la version du fichier info:
VersionInfo.vbs
Vous pouvez appeler à partir de la ligne de commande comme ceci:
ou vous pouvez en construire un vous-même. Ouvrez VS, créez une nouvelle application console. Créer un projet simple avec aucune ATL ou la prise en charge MFC, laissez la stdafx option cochée, mais ne cochez pas la case vide "projet" et de l'appeler VersionInfo.
Vous aurez un projet simple avec 2 fichiers: VersionInfo.cpp et VersionInfo.h
Ouvrir le fichier cpp et collez le texte suivant dans ce dernier, puis compiler. Vous serez en mesure de l'exécuter, le premier argument est le nom complet du fichier, il va imprimer "Produit: 5.6.7.8 Fichier: 1.2.3.4" basé sur la Version de la ressource de bloc. Si il n'y a pas de version de ressources, il va retourner -1, sinon 0.
Compile pour un 8k binaire à l'aide de la dll CRT, 60k avec tout lié statiquement (situé dans le C++ options, change "de la Génération de Code de la page, options d'Exécution" à "/MT")
HTH.
PS. Si vous ne souhaitez pas utiliser Visual Studio, ça va encore compiler à l'aide de tout compilateur c++ (croisons les doigts), mais vous aurez presque certainement avoir à modifier la directive #pragma - il suffit de spécifier que les lib dans l'éditeur de liens paramètres au lieu de cela, le pragma est juste une abréviation pour automatiquement lien avec la bibliothèque.
La listdlls outils de Systernals peut faire le travail: http://technet.microsoft.com/en-us/sysinternals/bb896656.aspx
Cette fonction renvoie le ntfs de Windows les détails d'un fichier de n'importe quel fichier en utilisant Cygwin bash (réelles de r-cliquer sur propriétés-info) pour le terme
Passer le chemin d'accès des fichiers à finfo(), peut être path unix, dos chemin relatif ou absolu. Le fichier est converti en un absolu nix chemin, puis vérifié pour voir si elle est en fait une régulière/fichier existant. Ensuite convertie en un absolu, windows chemin d'accès et envoyé à "wmic". Ensuite, la magie, vous avez des fichiers windows les détails dans le terminal. Utilisations: cygwin, cygpath, sed et awk. Les besoins de Windows WMI "wmic.exe" pour être opérationnel. La sortie est corrigé pour facile...
finfo file.dll | awk -F"=" '/Version/ {print $2}'
ougrep Version | cut -d '=' -f 2
Ou mieux encore d'ajouter de la fonctionnalité à passer des options. iefinfo -V file.dll
À l'aide de Powershell, il est possible d'obtenir la Version de la chaîne, c'est à dire 2.3.4 partir de n'importe quel exe ou dll avec la commande suivante
Testé sur Windows 10
Il y est une application en ligne de commande appelé "ShowVer" à CodeProject:
ShowVer.exe en ligne de commande VERSIONINFO programme d'affichage
Comme d'habitude, l'application est livrée avec un fichier exe et le code source (VisualC++ 6).
Hors sorties toutes les méta-données disponibles:
Allemande, le système Win7 la sortie pour user32.dll c'est comme cela:
et un avec
makecab
:exemple de sortie (il a une version string qui est un petit plus wmic méthode 🙂 ):
et un de plus à l'Aide de shell.application et hybride lot\jscript.Voici tooptipInfo.chauve-souris :
utilisé contre cmd.exe :
Pour certaines Dll, j'ai trouvé les infos de version manuellement avec
objdump
dans .rsrc. Avecobjdump -s -j .rsrc zlib1.dll
: