.BAT : Récupérer valeur de l'"UninstallString" du registre [Résolu/Fermé]

Signaler
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
-
Messages postés
139
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
19 janvier 2016
-
Bonjour,

Je souhaites récupérer le chemin de désinstallation indiqué dans le registre dans la partie "UninstallString".

J'ai fait :

For /F "skip=2 tokens=1,*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME" /v UninstallString') do (call "%%b")

Je finis bien par avoir le bon chemin, mais il inclut le type "REG_SZ", rendant la commande inutilisable.

Merci pour vos aides.

12 réponses

Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 936
ello
essayer avec ... tokens=1,2,3"... call "%%c")
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Re-bonjour Dubcek,

J'ai encore un nouveau problème. Merci d'être là.


Donc j'ai fait :

For /F "skip=2 tokens=1,2,3" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME" /v UninstallString') do (call %%c)


Et j'obtiens : '"C:\Program' > Il y a des guillemets en trop on dirait et en tout cas le chemin n'est pas complet. J'ai essayé en modifiant le chiffre de skip, mais j'obtiens rien de bon.

Merci
Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 936
montre ce que retourne
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME" /v UninstallString
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Bonjour,

j'obtiens le bon uninstallstring avec le fichier à lancer :


! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME
UninstallString REG_SZ "C:\Program Files\Programme\uninstall.exe"
Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 936
C:> type f1.txt


! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME
UninstallString REG_SZ "C:\Program Files\Programme\uninstall.exe"
C:> For /F "skip=5 tokens=1-2,*" %a in ('type f1.txt') do @(echo %c)
"C:\Program Files\Programme\uninstall.exe"
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Il m'indique que le fichier spéifier est introuvable (alors que la clef registre est bonne et que le dossier dans programfiles est bon également).

Par contre j'ai du mal à comprendre pourquoi avoir ajouter le chemin "C:\Program Files\Programme\uninstall.exe" alors que normalement c'est au registre de le donner en fonction du chemin contenu dans l'UninstallString.

Merci
Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 936
j'essaye dpuis un fichier, car reg query ne retourne pas a même chose
essayer
For /F "skip=5 tokens=1-2,*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME" /v UninstallString') do @(echo %%c)
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

C'est le genre de code qui semble fonctionner quand on le voit, mais lorsque je l'éxécute il ne se passe rien.
Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 936
numéroter les lignes pour voir
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME" /v UninstallString | find /v /n ""
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

En ligne [5] j'obtiens bien le bon chemin :

[1]
[2]! REG.EXE VERSION 3.0
[3]
[4]HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME
[5] UninstallString REG_SZ "C:\Program Files\PROGRAMME\uninstall.exe"
[6]
Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 936
donc je dirais skip=4 ?
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020

Oui c'est bien ça. Avec Skip=4 cela fonctionne parfaitement.

Y a vraiment aucun code en bat qui te résiste.

Merci à toi, comme toujours.
Messages postés
139
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
19 janvier 2016
29
Bonjour à tous

Ne connaissant pas grand chose en script, voici mon besoin,

Je dois récupérer sur deux cents postes (différents), la clé de registre qui diffère selon les OS, les postes et les versions, l'antivirus Symantec.
Je dois au préalable récupérer sur chaque poste la clé de régistre permettant la désinstallation et l'écrire dans un fichier texte.

Via votre script, je récupère bien la clé de registre.

Mon problème, c'est que le chemin vers la clé de registre diffère selon les postes.

La variable de votre script nommé "PROGRAMME" diffère sur plusieurs postes.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME

pour moi, le logiciel Symante est dans un dossier de ce type et ce dossier diffère sur plusieurs postes.


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{4FB8EE5D-FE34-40B5-9CE7-F3CF96EAA049}

j'aimerai donc via la valeur dans ce dossier "Display Name" ayant la valeur Symantec Endpoint Protection, trouvé le dossier.


Le script devra recherché dans les sous-dossiers de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall afin de trouver le DisplayName = Symantec Endpoint Protection et exporté la valeur de la clé
"UninstallString"
et écrire la valeur de cette clé dans un fichier texte > echo (cle_registre_desinstall.txt)

Auriez-vous une solution pour moi ?

Merci de votre aide.

Cordialement,
Messages postés
139
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
19 janvier 2016
29
Solution trouvée :

rem SOLUTION developpez.net : https://www.developpez.net/forums/d841976/general-developpement/programmation-systeme/windows/scripts-batch/recuperer-clef-base-registre/
set DDI="Symantec Endpoint Protection"
for /f %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\') do reg query %%a /v DisplayName | find %DDI% > nul && for /F "tokens=4,*" %%c in ('reg query %%a /v UninstallString') do set result=%%c
echo %result% >> c:\maclederesitre.txt