Registry mittels Batch auslesen
Hallo,
da ich mich hier neuangemeldet habe, bitte ich um Verzeihung falls die Kategorie doch nicht ganz passen sollte. Ich habe hier schon viele Lösungen für kleine Probleme gefunden, daher erstmal ein dickes Lob an alle die hier so fleißig antworten!!!
ich habe dank einigen Beiträgen hier mein Problem schon sehr weit lösen können, es gibt jedoch noch einige "unschöne Stellen" und nicht alllgemein funktionierende Dinge:
Ich möchte die aktuelle inst. Version von Adobe Acrobat ermitteln, und die SID des akt. Benutzers:
Bisher mache ich dies so:
gibt es hierfür auch eine schönere Möglichkeit, insbesondere bei engl. Windows gibt es "Lokale Einstellungen" schließlich nicht?
und weiter
Ich will eigentlich nur wissen welche Unterordner in HKEY_USERS\%sid%\Software\Adobe\Adobe Acrobat existieren, dafür speicher ich allerdings zunächst die gesamte Sub-Reg in die info.txt und ich ich brauche eigentlich nur die 3. zeile aus der Reg. Ich schaffe es allerdings nicht mittels if einen Sprung zu setzen, der wird einfach ignoriert, daher habe ich den einkommentiert.
Ein Weiteres mögliches Probleme könnte die Installation von verschiedenen Adobe Acrobat Versionen sein, z.B. hat die 7.0 nach der Deinstallation bei mir noch Reste hinterlassen so, dass der Reg-Eintrag nicht zu Adobe 8.0 sondern 7.0 hinzugefügt wurde. Ich musste den 7.0 Ordner erstmal löschen, damit es funktionierte.
Ich habe über sie Suchfunktion auch eine andere Möglichkeit zum auslesen der Versionsnummer gefunden und zwar
WMIC product get...
nur kriege ich dann bei Adobe Acrobat nur "Programm = Adobe Version = Acrobat" aber ich keine Versionsnummer.
So ich hoffe ist ausführlich genug beschrieben, falls nicht ergänze ich natürlich noch...
vielen Dank für eure Hilfe im voraus.
gruß Nils
da ich mich hier neuangemeldet habe, bitte ich um Verzeihung falls die Kategorie doch nicht ganz passen sollte. Ich habe hier schon viele Lösungen für kleine Probleme gefunden, daher erstmal ein dickes Lob an alle die hier so fleißig antworten!!!
ich habe dank einigen Beiträgen hier mein Problem schon sehr weit lösen können, es gibt jedoch noch einige "unschöne Stellen" und nicht alllgemein funktionierende Dinge:
Ich möchte die aktuelle inst. Version von Adobe Acrobat ermitteln, und die SID des akt. Benutzers:
Bisher mache ich dies so:
@cd "%userprofile%\Lokale Einstellungen\Anwendungsdaten\Microsoft\Credentials"
@FOR /F "tokens=*" %%i IN ('dir /A:D /B') do (SET sid=%%i)
gibt es hierfür auch eine schönere Möglichkeit, insbesondere bei engl. Windows gibt es "Lokale Einstellungen" schließlich nicht?
und weiter
@Set /A Line=0
@for /F "delims=\ tokens=*" %%i in ('REG QUERY "HKEY_USERS\%sid%\Software\Adobe\Adobe Acrobat" /s') DO (
@ set /a Line+=1
@ echo %%i>> %Temp%\info.txt
@ REM if %Line% GEQ 4 GOTO LineReadEnd
@)
@:LineReadEnd
Ich will eigentlich nur wissen welche Unterordner in HKEY_USERS\%sid%\Software\Adobe\Adobe Acrobat existieren, dafür speicher ich allerdings zunächst die gesamte Sub-Reg in die info.txt und ich ich brauche eigentlich nur die 3. zeile aus der Reg. Ich schaffe es allerdings nicht mittels if einen Sprung zu setzen, der wird einfach ignoriert, daher habe ich den einkommentiert.
Ein Weiteres mögliches Probleme könnte die Installation von verschiedenen Adobe Acrobat Versionen sein, z.B. hat die 7.0 nach der Deinstallation bei mir noch Reste hinterlassen so, dass der Reg-Eintrag nicht zu Adobe 8.0 sondern 7.0 hinzugefügt wurde. Ich musste den 7.0 Ordner erstmal löschen, damit es funktionierte.
Ich habe über sie Suchfunktion auch eine andere Möglichkeit zum auslesen der Versionsnummer gefunden und zwar
WMIC product get...
nur kriege ich dann bei Adobe Acrobat nur "Programm = Adobe Version = Acrobat" aber ich keine Versionsnummer.
So ich hoffe ist ausführlich genug beschrieben, falls nicht ergänze ich natürlich noch...
vielen Dank für eure Hilfe im voraus.
gruß Nils
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 90926
Url: https://administrator.de/contentid/90926
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
4 Kommentare
Neuester Kommentar
Servus und Willkommen
Von einem unserer Batchgurus hab ich folgenden Trick gelernt:
Früher hab ich das mit
gelöst.
Zum anderen,
ich hab ein Kixscript, das jeden kleineren Acrobat Key löscht, wenn Version 8 gefunden wird.
Und wegen der SID - von Sysinternals gibts das schöne Tools psgetsid.exe
gruß
Von einem unserer Batchgurus hab ich folgenden Trick gelernt:
help /? > temp.txt
find "Befehl" tempt.txt
if %errorlevel% ==0 goto german
find "command" tempt.txt
if %errorlevel% ==0 goto eng
:german
:eng
Früher hab ich das mit
if exist "%userprofile%\Lokale Einstellungen\Anwendungsdaten\" goto german
if exist "%userprofile%\Local Settings\Application Data\" goto eng
Zum anderen,
ich hab ein Kixscript, das jeden kleineren Acrobat Key löscht, wenn Version 8 gefunden wird.
:Acrobat8
if existkey( "HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\8.0\" ) ="0"
?"Acrobat8 wurde gefunden "
Deltree ( "HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\5.0" )
Deltree ( "HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\5.1" )
Deltree ( "HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\7.0" )
else
? "Adobe Acrobat 8 nicht gefunden"
endif
Und wegen der SID - von Sysinternals gibts das schöne Tools psgetsid.exe
gruß
Hallo Przigoda und willkommen im Forum!
Als Alternative für das Auslesen der SID könntest Du folgenden Batch einsetzen:
Da hier eine WMI-Abfrage (über ein integriertes VBScript) erfolgt, sollte die BS-Sprache eigentlich kein Problem sein - schneller ist aber sicherlich Deine bisher verwendete Variante.
Allerdings frage ich mich, warum Du nicht über HKCU zugreifst (was ich im Beispiel unten mache).
Zu Teil 2:
Vermutlich ist es ohnehin sicherer, anstelle von "Zeile 3" einen Suchbegriff vorzugeben (zB "Acrobat\") daher:
Auf diese Art solltest Du (aufgrund der Sortierung innerhalb der Registry) auch die höchste Versionsnummer erhalten ...
Grüße
bastla
P.S.: @timobeil
Als Alternative für das Auslesen der SID könntest Du folgenden Batch einsetzen:
@echo off & setlocal
set G=%temp%\GetSID.vbs
echo Set net=CreateObject("WScript.Network"):WScript.Echo GetObject("winmgmts:\\.\root\cimv2").Get("Win32_UserAccount.Name='"^&net.UserName^&"',Domain='"^&net.UserDomain^&"'").SID>%G%
for /f %%i in ('cscript //nologo %G%') do set "SID=%%i"
echo %SID%
Allerdings frage ich mich, warum Du nicht über HKCU zugreifst (was ich im Beispiel unten mache).
Zu Teil 2:
Vermutlich ist es ohnehin sicherer, anstelle von "Zeile 3" einen Suchbegriff vorzugeben (zB "Acrobat\") daher:
for /f "tokens=5 delims=\" %%i in ('REG QUERY "HKEY_CURRENT_USER\Software\Adobe\Adobe Acrobat" /s^|findstr /c:"Acrobat\\"') do set "AcrobatVersion=%%i"
echo %AcrobatVersion%
Grüße
bastla
P.S.: @timobeil
Von einem unserer Batchgurus ...
Es gibt hier ohnehin nur den einen ...