.BAT : Récupérer valeur de l'"UninstallString" du registre

Résolu
micromega Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -  
matmar08120 Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

12 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
ello
essayer avec ... tokens=1,2,3"... call "%%c")
0
micromega Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
montre ce que retourne
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME" /v UninstallString
0
micromega Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
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"
0

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

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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"
0
micromega Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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)
0
micromega Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
C'est le genre de code qui semble fonctionner quand on le voit, mais lorsque je l'éxécute il ne se passe rien.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
numéroter les lignes pour voir
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAMME" /v UninstallString | find /v /n ""
0
micromega Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
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]
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
donc je dirais skip=4 ?
0
micromega Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   1
 
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.
0
matmar08120 Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
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,
0
matmar08120 Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
 
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
0