Registry - Programm Version auslesen
Hallo ihr Administratoren,
ich habe folgendes Problem:
Ich soll eine Batch Datei schreiben, die mir in der Registry nach einem bestimmten Programm sucht und mir sagt welche Version dieses Programm hat.
Bis jetzt bin ich so weit gekommen, dass mir die insallierten Programme ausgegeben werden.
Nur ab da komme ich nicht weiter.
Wäre Super wenn ihr mir Helfen könntet!
Jetzt soll quasi die ausgegebene Liste nach einem bestimmten Programm durchsucht werden und mir die Versionsnummer ausgeben.
Ist das zu realisieren?
Danke schonmal.
MfG
BKAMk2
ich habe folgendes Problem:
Ich soll eine Batch Datei schreiben, die mir in der Registry nach einem bestimmten Programm sucht und mir sagt welche Version dieses Programm hat.
Bis jetzt bin ich so weit gekommen, dass mir die insallierten Programme ausgegeben werden.
Nur ab da komme ich nicht weiter.
Wäre Super wenn ihr mir Helfen könntet!
FOR /F "usebackq" %%i IN (`reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products`) DO (
reg query "%%i\InstallProperties" /v DisplayName
)
pause
Jetzt soll quasi die ausgegebene Liste nach einem bestimmten Programm durchsucht werden und mir die Versionsnummer ausgeben.
Ist das zu realisieren?
Danke schonmal.
MfG
BKAMk2
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 81077
Url: https://administrator.de/forum/registry-programm-version-auslesen-81077.html
Ausgedruckt am: 23.12.2024 um 18:12 Uhr
7 Kommentare
Neuester Kommentar
Hi BKAMk2,
es geht auch einfacher. Falls Du XP Pro SP2 hast dann mit.
WMIC /OUTPUT:Software.htm Product get name,version /FORMAT:hform
Hiermit bekommst Du eine HTML Liste mit Programmname und Versionsangabe.
Oder mit
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (
Rem %%B = Programmname, %%C = Version
Echo "%%B" "%%C"
)
Gruß
Stefan
es geht auch einfacher. Falls Du XP Pro SP2 hast dann mit.
WMIC /OUTPUT:Software.htm Product get name,version /FORMAT:hform
Hiermit bekommst Du eine HTML Liste mit Programmname und Versionsangabe.
Oder mit
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (
Rem %%B = Programmname, %%C = Version
Echo "%%B" "%%C"
)
Gruß
Stefan
Moin BKAMk2,
bei mir würde folgende Mimik am CMD-Prompt zum (Teil-)Erfolg führen:
[Eingabezeilen beginnen mit ">"]
Im Batch sähe das formatiert in etwa so aus:
[ungetestet]
Natürlich ist es so etwas hakelig an zwei Stellen:
1) Man/frau muss den exakten "Displaynamen" wissen.
2) die DisplayVersion-Formatierung ist seeeeeeehr frei in der Gestaltung. Bzw. in der Darstellung.
Ich würde erstmal mit diesem Ansatz versuchen, wie weit ihr damit bei Eurem speziellen Fall kommt.
Ggf. müssen wir dann noch mal ein Brainstorming über eine andere Strategie machen.
Grüße
Biber
bei mir würde folgende Mimik am CMD-Prompt zum (Teil-)Erfolg führen:
[Eingabezeilen beginnen mit ">"]
>Set "suchname=MetaFrame Presentation Server Client"
>SET "rootkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products"
>for /f %i in ('reg query "%rootkey%"') do @For /f "tokens=2,*" %j in ('reg query "%i\InstallProperties" /v Displayname ^2^>nul ^|find "Displayname"') do @if "%k"=="%suchname%" for /f "tokens=2,*" %a in ('reg query "%i\InstallProperties" /v DisplayVersion^|find "Version"') do @echo %k: %b
MetaFrame Presentation Server Client: 9.230.50211
Im Batch sähe das formatiert in etwa so aus:
@echo off & setlocal
Set "suchname=MetaFrame Presentation Server Client"
Set "rootkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products"
for /f %%i in ('reg query "%rootkey%"') do (
For /f "tokens=2,*" %%j in ('reg query "%%i\InstallProperties" /v Displayname ^2^>nul ^|find "Displayname"') do (
if "%%k"=="%suchname%" (
for /f "tokens=2,*" %%a in ('reg query "%%i\InstallProperties" /v DisplayVersion^|find "Version"') do set "version=%%b"
)
))
Echo Ermittelte DisplayVersion für [%suchname%]: [%version%]
Natürlich ist es so etwas hakelig an zwei Stellen:
1) Man/frau muss den exakten "Displaynamen" wissen.
2) die DisplayVersion-Formatierung ist seeeeeeehr frei in der Gestaltung. Bzw. in der Darstellung.
Ich würde erstmal mit diesem Ansatz versuchen, wie weit ihr damit bei Eurem speziellen Fall kommt.
Ggf. müssen wir dann noch mal ein Brainstorming über eine andere Strategie machen.
Grüße
Biber
Ich habe es jetzt einmal mit Versionsnummer angepasst.
setlocal enabledelayedexpansion
SET Versionsnummer=1.0
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (
set "Program=%%B"
set "Version=%%C"
if "!PROGRAM!"=="Photo Editor" (
if "!VERSION:~0,-1!"=="%versionsnummer%" echo "!PROGRAM!" "!VERSION:~0,-1!"
)
rem Anzeige aller Programme "REM" entfernen.
rem echo "!PROGRAM!", "!VERSION:~0,-1!"
)
Gruß
Stefan
setlocal enabledelayedexpansion
SET Versionsnummer=1.0
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (
set "Program=%%B"
set "Version=%%C"
if "!PROGRAM!"=="Photo Editor" (
if "!VERSION:~0,-1!"=="%versionsnummer%" echo "!PROGRAM!" "!VERSION:~0,-1!"
)
rem Anzeige aller Programme "REM" entfernen.
rem echo "!PROGRAM!", "!VERSION:~0,-1!"
)
Gruß
Stefan
Um es noch etwas einfacher zu machen.
SET ProgVers=6.6.0.8
SET Programm=Nero
FOR /F "tokens=1,2 skip=1 delims= " %%A IN ('"WMIC product where (Name='%Programm%' and version='%ProgVers%') get name,version"') DO (
Echo Programm = %%A Version = %%B
)
Damit bekommst Du nur die Programme zurück, die der Abfrage entsprechen. Du musst aber vorher wissen nach was man sucht. Die Vorgehensweise kennst Du jetzt mit WMIC.
Gruß
Stefan
SET ProgVers=6.6.0.8
SET Programm=Nero
FOR /F "tokens=1,2 skip=1 delims= " %%A IN ('"WMIC product where (Name='%Programm%' and version='%ProgVers%') get name,version"') DO (
Echo Programm = %%A Version = %%B
)
Damit bekommst Du nur die Programme zurück, die der Abfrage entsprechen. Du musst aber vorher wissen nach was man sucht. Die Vorgehensweise kennst Du jetzt mit WMIC.
Gruß
Stefan