Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

GELÖST

Registry - Programm Version auslesen

Mitglied: BKAMk2

BKAMk2 (Level 1) - Jetzt verbinden

19.02.2008, aktualisiert 13.07.2008, 10892 Aufrufe, 7 Kommentare

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!

01.
FOR /F "usebackq" %%i IN (`reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products`) DO ( 
02.
 
03.
reg query "%%i\InstallProperties" /v DisplayName 
04.
 
05.
 
06.
07.
 
08.
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
Mitglied: stbewo
19.02.2008 um 08:55 Uhr
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
Bitte warten ..
Mitglied: BKAMk2
19.02.2008 um 09:09 Uhr
Das Problem ist nur das aus der Batch-Datei ein Installer gestartet werden soll, wenn eine veraltete Version des Programmes eingetragen ist.

Aber danke schonmal für den tipp.

€dit:

Hab gesehen das du noch einen weiteren Vorschlag gepostet hast.
Funktioniert leider auch nicht.

Also es ist recht schwierig zu erklären, was wir genau vorhaben.

Es soll in der Registry nach einem bestimmten Programm gesucht werden und die Versionsnummer überprüft werden.
Die Versionsnummer wird in der Batch durch einen
01.
SET version=VERSIONSNUMMER 
festgelegt.

Sollte die Versionsnummer nicht mit der in der Batch übereinstimmen, wird eine zweite Batch gestartet, die eine Installationsroutine startet. Dadurch wird der Wert in der Registry gleich aktualisiert.

Das Problem an der Sache ist, das Windows in der Registry unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\"
sehr eigenwillig und per Zufall (scheint mir) generierte Schlüssel ablegt.

Und da wir nicht wissen können in welchem Schlüssel die Versionummer steht müssen wir alle durchsuchen.
Und damit nicht jedes Programm eine Installation startet muss der Name auch verglichen werden.

Ich hoffe ich habe jetzt nicht jeden entmutigt.

Wo steckt der Bieber eigentlich?
Bitte warten ..
Mitglied: Biber
19.02.2008 um 11:00 Uhr
Moin BKAMk2,

bei mir würde folgende Mimik am CMD-Prompt zum (Teil-)Erfolg führen:
[Eingabezeilen beginnen mit ">"]
01.
>Set "suchname=MetaFrame Presentation Server Client" 
02.
>SET "rootkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products" 
03.
>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 
04.
MetaFrame Presentation Server Client: 9.230.50211
Im Batch sähe das formatiert in etwa so aus:

01.
 @echo off & setlocal 
02.
Set "suchname=MetaFrame Presentation Server Client" 
03.
Set "rootkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products" 
04.
 
05.
for /f %%i in ('reg query "%rootkey%"') do ( 
06.
    For /f "tokens=2,*" %%j in ('reg query "%%i\InstallProperties" /v Displayname ^2^>nul ^|find "Displayname"') do ( 
07.
      if "%%k"=="%suchname%" ( 
08.
         for /f "tokens=2,*" %%a in ('reg query "%%i\InstallProperties" /v DisplayVersion^|find "Version"') do set "version=%%b" 
09.
10.
))       
11.
 
12.
Echo Ermittelte DisplayVersion für [%suchname%]: [%version%]
[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
Bitte warten ..
Mitglied: stbewo
19.02.2008 um 11:02 Uhr
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
Bitte warten ..
Mitglied: BKAMk2
20.02.2008 um 13:34 Uhr
So hat jetzt Funktioniert.
Bin euch echt zu tiefsten Dank verpflichtet.

Hier nochmal der Finale Code:
01.
@echo off 
02.
setlocal enabledelayedexpansion 
03.
SET versionsnummer=1.6 
04.
set "found=0" 
05.
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO ( 
06.
set "Program=%%B" 
07.
set "Version=%%C" 
08.
if "!PROGRAM!"=="WinRar" ( 
09.
set "found=1" 
10.
if not "!VERSION:~0,-1!"=="%versionsnummer%" call \\server1\update.bat 
11.
if "!VERSION:~0,-1!"=="%Versionsnummer%" echo OK! 
12.
13.
14.
15.
rem Anzeige aller Programme "REM" entfernen. 
16.
rem echo "!PROGRAM!", "!VERSION:~0,-1!" 
17.
IF "!found!"=="0" call \\server1\install.bat
Nochmals vielen Dank!

MfG
BKAMk2
Bitte warten ..
Mitglied: stbewo
20.02.2008 um 15:13 Uhr
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
Bitte warten ..
Mitglied: BKAMk2
20.02.2008 um 15:44 Uhr
Er zeigt mir doch jetzt garnix mehr an.
Was er jetzt macht entspricht auch vollkommen dem was er machen sollte.
Er prüft ob die Software installiert ist. Wenn ja überprüft er die Version.
Sollte die Versionsnummer anders sein als erwünscht startet er ein Update.

Sollte die Software nicht installiert sein startet er eine Installationsbatch.

Aber vielen Dank. Ich denke alleine wäre ich nie auf die WMIC gekommen

Selbst mein Ausbilder war erstaunt was es nicht alles gibt
Bitte warten ..
Ähnliche Inhalte
Windows 10
Gänderte Registry einträge auslesen
gelöst Frage von winterj86Windows 103 Kommentare

Hallo, im Zuge eines Troulbeshootings wurden vor einigen Tagen auf einem Client, Registry Werte verändert bzw. hinzugefügt. Leider hat ...

Windows 7
Auslesen von Schlüsseln aus der Windows Registry
gelöst Frage von HumbleBumbleWindows 72 Kommentare

Hallo Liebe Community, ich möchte gerne mit Hilfe einer Batch mehrere Schlüssel aus der Windows Registry auslesen um diese ...

Batch & Shell
Batch Registry auslesen - anpassen
gelöst Frage von pi0h.kkBatch & Shell5 Kommentare

Hallo Zusammen, ich versuche seit einiger Zeit eine ausgelesen Reg-Datei anzupassen, sodass sie als *.ini von einer Applikation genutzt ...

Lizenzierung
Programm soll in verschiedenen Versionen lizenziert sein
Frage von YanmaiLizenzierung20 Kommentare

Hallo ihr Administratoren, ich möchte ein Programm entwickeln, was man sich in einer kostenlosen, einer standard und einer premium ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...