
36539
04.02.2007, aktualisiert am 17.10.2012
Suche nach Nero-Installation schlägt fehl
Hallo an Alle,
ich beziehe mich auf meinen alten Thread:
Installationspfad einer Anwendung suchen auf unbekanntem PC
Es ging darum für eine Tool von mir ( "NeroClean_Master" ) die Nero-Installation (Nur Version 6 oder 7) auch auf einem unbekannten System sicher zu finden und über Fehlerroutine das Programm zu stoppen, wenn nero.exe von Nero 6/7 nicht gefunden wird.
Zwischenzeitlich dachte ich das Problem sei gelöst, aber jetzt komme ich einfach nicht weiter. Leider ist es so das bei einigen Systemen, welche definitiv Nero installiert haben, die nero.exe nicht gefunden wird.
Ausgangsdaten bei System mit Nero 6:
In der Registry stehen unter:
Ausgangsdaten bei System mit Nero 7:
In der Registry stehen unter:
Der echte Pfad kann abweichen. Wenn der User nicht per Standard Installiert hat kann das LW und damit der Pfad ein anderer sein. Damit das Tool NeroClean_Master korrekt arbeite benötige ich diesen echten Installationspfad.
bisherige Lösungen:
mit dieser werden immer nur Nero 6-Installationen gefunden, an Nero 7 scheitert es:
Um eine echte Installation zu finden (nicht eventuelle Leichen oder abgebrochene Installationen) wäre mir die Suchvariante über die Registry aber viel lieber. Leider scheitert es damit _immer_ an Nero 7 und teilweise sogar an Nero 6:
irgendwie schein mir das Leerzeichen bei "..Nero 7.." da reinzuspucken., aber komme nicht drauf wie ich das hinbekomme. 
Habt Ihr eine Idee wo mein Fehler liegt?
Gruß
onegasee59
ich beziehe mich auf meinen alten Thread:
Installationspfad einer Anwendung suchen auf unbekanntem PC
Es ging darum für eine Tool von mir ( "NeroClean_Master" ) die Nero-Installation (Nur Version 6 oder 7) auch auf einem unbekannten System sicher zu finden und über Fehlerroutine das Programm zu stoppen, wenn nero.exe von Nero 6/7 nicht gefunden wird.
Zwischenzeitlich dachte ich das Problem sei gelöst, aber jetzt komme ich einfach nicht weiter. Leider ist es so das bei einigen Systemen, welche definitiv Nero installiert haben, die nero.exe nicht gefunden wird.
Ausgangsdaten bei System mit Nero 6:
In der Registry stehen unter:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
ero.exe]
@="C:\Programme\Ahead\nero\nero.exe"
"Path"="C:\Programme\Ahead\Nero" (den Pfad will ich finden)
In der Registry stehen unter:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths
ero.exe]
@=""C:\Nero\Nero 7\Core\nero.exe"
"Path"=""C:\Nero\Nero 7\Core\" (den Pfad will ich finden)
bisherige Lösungen:
mit dieser werden immer nur Nero 6-Installationen gefunden, an Nero 7 scheitert es:
for /f "tokens=2 delims==%% " %%i in ('ftype^|find /i "nero.exe"') do set "proglw=%%~di" & set "progpfad=%%~pi"
set nerofile=%proglw%%progpfad%nero.exe
echo %nerofile%
if not exist %nerofile% set echo_abbruch="Es wurde keine Installation von Nero 6 (oder h"her) gefunden!" && goto abbruch
set regkey="HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Paths
ero.exe"
for /f "tokens=4 delims= " %%i in ('reg query %regkey% /s^|find "NO NAME" ') do set "proglw=%%~di" & set "progpfad=%%~pi"
set nerofile=%proglw%%progpfad%nero.exe
echo %nerofile%
if not exist %nerofile% set echo_abbruch="Es wurde keine Installation von Nero 6 (oder h"her) gefunden!" && goto abbruch
Habt Ihr eine Idee wo mein Fehler liegt?
Gruß
onegasee59
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 50673
Url: https://administrator.de/forum/suche-nach-nero-installation-schlaegt-fehl-50673.html
Ausgedruckt am: 23.04.2025 um 22:04 Uhr
33 Kommentare
Neuester Kommentar
Moin onegasee59,
mit folgender FOR-Konstruktion müsste es gehen (Demo am CMD-Prompt):
-bzw im Batch-
Ungetestete und ganz verspätete Skizze.
[Edit]
Hier noch eine getestete und etwas schlankere Variante:
-bzw- im Batch:
[/Edit]
HTH
Biber
mit folgender FOR-Konstruktion müsste es gehen (Demo am CMD-Prompt):
>set nerokey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe"
(=19:15:38 D:\temp=)
>for /f "tokens=4*" %i in ('reg query %nerokey% /ve ^|find "nero.exe"') do @echo %i %j
C:\Programme\Ahead\nero\Nero 7\nero.exe
-oder-
(=19:20:32 D:\temp=)
>for /f "tokens=4*" %i in ('reg query %nerokey% /ve ^|find "nero.exe"') do @for %x in ("%i %j") do @
echo %~dpx
C:\Programme\Ahead\Nero\Nero 7\
....
set nerokey="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe"
for /f "tokens=4*" %%i in ('reg query %nerokey% /ve ^|find "nero.exe"') do @(
for %%x in ("%%i %%j") do @set "NeroInstpath=%%~dpx"
)
Echo Nero ist installiert in [%NeroInstPath%]
...
Ungetestete und ganz verspätete Skizze.
[Edit]
Hier noch eine getestete und etwas schlankere Variante:
>for /f "skip=4 tokens=2*" %i in ('reg query %nerokey% /v Path') do @echo %j
C:\Programme\Ahead\Nero\Nero 7
...
for /f "skip=4 tokens=2*" %%i in ('reg query %nerokey% /v Path') do set "neropath=%%j"
HTH
Biber
Moin onegassee,
das ist mir ja langsam peinlich...
Wenn Dein Nero7-Anwender noch ein letztes Mal Geduld hat (ich könnte ihn und Dich ja dafür zur Meisterschaftsfeier nach Bremen einladen....is' ja bald wieder...),
dann jag doch noch mal die kurze Variante durch bitte:
Denn soweit ich in meiner näheren Umgebung gesehen habe, steht an der angegebenen Stelle in der Registry auch immer das Value "Path". Dann ist das alberne Geeiere mit "Find" nicht nötig.
Und... ich verstehe es wirklich nicht. Hat der o.a. Anwender auch dieselbe Reg.exe-Version wie Du? *grübel*
Grüsse
Biber
[Edit]....mein Posting hat sich überschnitten mit Deinem "Fortsetzung 2". Schade.
Nein, besser mal einen hier im Forum finden, der Nero 7 legal installiert hat.
Und dann die Reg-Values sezieren....

Andererseits... das Problem muss viel banaler - ich doktore bestimmt an der falschen Stelle.
Hier läuft irgendetwas banaleres verkehrt, aber ich sehe es grad nicht.
[/Edit]
das ist mir ja langsam peinlich...
Wenn Dein Nero7-Anwender noch ein letztes Mal Geduld hat (ich könnte ihn und Dich ja dafür zur Meisterschaftsfeier nach Bremen einladen....is' ja bald wieder...),
dann jag doch noch mal die kurze Variante durch bitte:
for /f "skip=4 tokens=2*" %%i in ('reg query %nerokey% /v Path') do set "neropath=%%j"
-bzw wenn Du Drive und Path trennen willst:-for /f "skip=4 tokens=2*" %%i in ('reg query %nerokey% /v Path') do set "neropath=%%~pj" & set nerodrive=%%~dj
Denn soweit ich in meiner näheren Umgebung gesehen habe, steht an der angegebenen Stelle in der Registry auch immer das Value "Path". Dann ist das alberne Geeiere mit "Find" nicht nötig.
Und... ich verstehe es wirklich nicht. Hat der o.a. Anwender auch dieselbe Reg.exe-Version wie Du? *grübel*
Grüsse
Biber
[Edit]....mein Posting hat sich überschnitten mit Deinem "Fortsetzung 2". Schade.
Hast Du noch eine Idee.
*grmpf*...vorbeifahren bei diesem Nero 7-Hansel und downgraten auf Nero 6...Nein, besser mal einen hier im Forum finden, der Nero 7 legal installiert hat.
Und dann die Reg-Values sezieren....
Wäre es besser das Ganze über VBS zu machen?
Dann müsste ich bastla wecken... wäre auch machbar Andererseits... das Problem muss viel banaler - ich doktore bestimmt an der falschen Stelle.
Hier läuft irgendetwas banaleres verkehrt, aber ich sehe es grad nicht.
[/Edit]
Schade, schade....
Dann kann es eigentlich ja nur sein, dass
- diese Benutzer nicht im HKLM-Zweig rumlesen dürfen ( Rechteproblem? Was bringt denn reg.exe bei denen am CMD-Prompt?)
- oder dass bei der Reg.exe - Rückgabe weniger Zeilen kommen als bei mir und der "skip 4" das Problem ist
Sonst....ich weiss es nicht.
Vielleicht haben wir ja ein paar Reg.exe und Nero.Besitzer, die mal diese Zeile
...per Copy & Paste abschicken und das Ergebnis hier posten. Wäre nett.
Ich kann den Fehler nicht reproduzieren bzw. lokalisieren.
Nimm ersatzweise diesen Notnagel hier:
Gruss
Biber
Dann kann es eigentlich ja nur sein, dass
- diese Benutzer nicht im HKLM-Zweig rumlesen dürfen ( Rechteproblem? Was bringt denn reg.exe bei denen am CMD-Prompt?)
- oder dass bei der Reg.exe - Rückgabe weniger Zeilen kommen als bei mir und der "skip 4" das Problem ist
Sonst....ich weiss es nicht.
Vielleicht haben wir ja ein paar Reg.exe und Nero.Besitzer, die mal diese Zeile
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe"
...per Copy & Paste abschicken und das Ergebnis hier posten. Wäre nett.
Ich kann den Fehler nicht reproduzieren bzw. lokalisieren.
Nimm ersatzweise diesen Notnagel hier:
for /f "tokens=2 delims== " %%i in ('ftype^|find/i "nero.exe"') do set "neroDrive=%%~dpi" & set neroPath=%%~pi
Gruss
Biber
Bei mir leifert das sowas:
Beginn der Ausgabe ab hier ------
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe
<NO NAME> REG_SZ E:\Programme\Nero\Nero 6\nero\nero.exe
Path REG_SZ E:\Programme\Nero\Nero 6\Nero
Ende der Ausgabe hier ------
miniversum
[Edit Biber]
Thx, miniversum...
Aus dem Reg-Auszug macht meine Zeile von oben:
...as should do...
[/Edit]
Beginn der Ausgabe ab hier ------
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe
<NO NAME> REG_SZ E:\Programme\Nero\Nero 6\nero\nero.exe
Path REG_SZ E:\Programme\Nero\Nero 6\Nero
Ende der Ausgabe hier ------
miniversum
[Edit Biber]
Thx, miniversum...
Aus dem Reg-Auszug macht meine Zeile von oben:
>type d:\temp\mvsreg.txt
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe
<NO NAME> REG_SZ E:\Programme\Nero\Nero 6\nero\nero.exe
Path REG_SZ E:\Programme\Nero\Nero 6\Nero
(=19:23:49 D:\temp=)
>for /f "skip=5 tokens=2*" %i in (D:\temp\mvsreg.txt) do echo set "neropath=%~pj" & echo set "nerodrive=%~dj"
(=19:24:06 D:\temp=)
>echo set "neropath=\Programme\Nero\Nero 6\" & echo set "nerodrive=E:"
set "neropath=\Programme\Nero\Nero 6\"
set "nerodrive=E:"
[/Edit]
@Biber
, aber dann wäre ich in Konflikt mit einem meiner Neujahrsvorsätze gekommen: "Poste nicht mit einer Körpertemperatur von über 38,5 Grad im Schatten!"
Aber falls ich heute noch mitspielen darf:
... und falls der Exe-Pfad gewünscht wird, am Ende des Schlüssels "Path" weglassen, aber nicht den "\".
Grüße
bastla
[Edit] Gibt's jetzt auch mit "delims=" ... [/Edit]
Dann müsste ich bastla wecken... wäre auch machbar
Machbar wär's gewesen Aber falls ich heute noch mitspielen darf:
echo WScript.Echo WScript.CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe\Path")>"%temp%\NeroPath.vbs"
for /f "delims=" %%i in ('cscript //nologo "%temp%\NeroPath.vbs"') do set "NeroPath=%%i" & set "NeroDrive=%%~di"
del "%temp%\NeroPath.vbs"
Grüße
bastla
[Edit] Gibt's jetzt auch mit "delims=" ... [/Edit]
@ onegasee59

Falls der Pfad keinen ":" an der zweiten Stelle hat, wird das Script ohne Ausgabe, aber mit ERRORLEVEL 1 beendet, ansonsten wird ein gültiger Pfad angenommen und sicher gestellt, dass dieser mit "\" endet. Die von Dir gewünschte Schreibweise
müsste damit möglich sein. Das Abfragen des Errorlevels habe ich nicht berücksichtigt, da Du ja ohnehin den oben beschriebenen vollen Exe-Pfad überprüfst und dieser im Fehlerfall nur "nero.exe" ergibt, sodass die Programmdatei nicht gefunden wird.
Grüße
bastla
Es ist zum Verzweifeln
abgelehnt set "NPTemp=%temp%\NeroPath.vbs"
echo strNeroPath = WScript.CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe\Path")>"%NPTemp%"
echo If Right(strNeroPath,1) ^<^> "\" Then strNeroPath = strNeroPath ^& "\">>"%NPTemp%"
echo If Not Mid(strNeroPath, 2, 1) = ":" Then WScript.Quit(1)>>"%NPTemp%"
echo WScript.Echo strNeroPath>>"%NPTemp%"
for /f "tokens=1* delims=:" %%i in ('cscript //nologo "%NPTemp%"') do set "NeroDrive=%%i:" & set "NeroPath=%%j"
del "%NPTemp%"
"%NeroDrive%%NeroPath%nero.exe"
Grüße
bastla
Moin onegasee59,
na Gatesseidank haben wir jetzt wenigstens EINE funktionierende Lösung.
Und mit den Vista-Reg.exe-Bildschirmausgaben (die, bei denen die Reg.exe-Versions-Anzeige fehlt) können wir auch umgehen.
Da wir davon jetzt ja wissen.
Das Problem dabei war dann also in der Tat, wie oben vermutet, dass ich mit meinem "skip=3"..."skip=4" oder (was bei WinXP passt) "skip=5" über die Gesamt-Zeilenzahl drüberhüpfe.
Ich hab es eben noch mal an CMD-Prompt getestet:
[die oben von Dir gepostete nerovista.txt... aus :
[Edit 4] Ergebnis von User mit WIN Vista und Nero 7
Microsoft Windows [Version 6.0.6000]....]
...mit "skip=2" würde auch die Native-Batch-Variante (bei allen WIn-Versionen) wieder fliegen.
Ein schönes Gefühl, wenn sich so ein Thread dem glücklichen Ende nähert...
Gruss
Biber
na Gatesseidank haben wir jetzt wenigstens EINE funktionierende Lösung.
Und mit den Vista-Reg.exe-Bildschirmausgaben (die, bei denen die Reg.exe-Versions-Anzeige fehlt) können wir auch umgehen.
Da wir davon jetzt ja wissen.
Das Problem dabei war dann also in der Tat, wie oben vermutet, dass ich mit meinem "skip=3"..."skip=4" oder (was bei WinXP passt) "skip=5" über die Gesamt-Zeilenzahl drüberhüpfe.
Ich hab es eben noch mal an CMD-Prompt getestet:
[die oben von Dir gepostete nerovista.txt... aus :
[Edit 4] Ergebnis von User mit WIN Vista und Nero 7
Microsoft Windows [Version 6.0.6000]....]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe
(Standard) REG_SZ C:\Program Files\Nero\Nero 7\Core\Nero.exe
Path REG_SZ C:\Program Files\Nero\Nero 7\Core
>for /f "<b>skip=2</b> tokens=2*" %i in (D:\temp\nerovista.txt) do echo set "neropath=%~pj" & echo set "nerodrive=%~dj"
(=17:47:08 D:\temp=)
>echo set "neropath=\Program Files\Nero\Nero 7\" & echo set "nerodrive=C:"
set "neropath=\Program Files\Nero\Nero 7\"
set "nerodrive=C:"
Ein schönes Gefühl, wenn sich so ein Thread dem glücklichen Ende nähert...
Gruss
Biber
Moin onegasee59,
sorry, meine Schlamperei.
Da ich ja jetzt die Reg-Zeile %nerokey%, Eintrag "Path" auswerte, steht ja auch nur der Path drin.
Es muss dann natürlich "..set NeroPath=%%~pnxj statt "..set NeroPath=%~pj" heißen.
Ist ja auch oben in meinem letzten Beispiel zu sehen... der Restpfad "...\Core\" wird ja nicht ausgegeben.
So jetzt schon:
So viele Hakeleien hatte ich auch selten bei einem Bätschelchen...
Gruss Biber
sorry, meine Schlamperei.
Da ich ja jetzt die Reg-Zeile %nerokey%, Eintrag "Path" auswerte, steht ja auch nur der Path drin.
Es muss dann natürlich "..set NeroPath=%%~pnxj statt "..set NeroPath=%~pj" heißen.
Ist ja auch oben in meinem letzten Beispiel zu sehen... der Restpfad "...\Core\" wird ja nicht ausgegeben.
So jetzt schon:
(=20:22:28 D:\temp=)
>for /f "skip=2 tokens=2*" %i in (D:\temp\nerovista.txt) do echo set "neropath=%~pnxj" & echo set "nerodrive=%~dj"
(=20:24:49 D:\temp=)
>echo set "neropath=\Program Files\Nero\Nero 7\Core" & echo set "nerodrive=C:"
set "neropath=\Program Files\Nero\Nero 7\Core"
set "nerodrive=C:"
So viele Hakeleien hatte ich auch selten bei einem Bätschelchen...
Gruss Biber
...aber bastla! *tztz
Pfade speichert man/frau doch nie mit abschliessendem Backslash...
Das würde doch die Lesbarkeit unnötig erschweren [ vgl. %HOMEDRIVE%\%HOMEDIR% oder %windir%].
Die einzige mir bekannte Softwareschnellbraterei, die gegen diese Konvention hin und wieder verstösst, wohnt in Redmond...
Gruss
Biber
Pfade speichert man/frau doch nie mit abschliessendem Backslash...
Das würde doch die Lesbarkeit unnötig erschweren [ vgl. %HOMEDRIVE%\%HOMEDIR% oder %windir%].
Die einzige mir bekannte Softwareschnellbraterei, die gegen diese Konvention hin und wieder verstösst, wohnt in Redmond...
Gruss
Biber
@Biber
(siehe ursprüngliche Zielsetzung)
Grüße
bastla
... wohnt in Redmond...
... aber auch am Onegasee Grüße
bastla
@36539
Können wir dann bitte bitte bitte diesen Kaugummithread schliessen..? *bettel*
Grüße Biber
P.S. Besser Urlaub am Onegasee als Arbeiten in Redmond...
Ja aber eben nur wenn im Pfad mindesten 1 Ordner mit Leerzeichen enthalten ist.
Also, der letzte Ansatz mit "%~pnxj" sollte mit und ohne Leerzeichen im "Path" funktionieren...>type nerovistaNospace.txt
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nero.exe
(Standard) REG_SZ C:\Program Files\Nero\Nero 7\Core\Nero.exe
Path REG_SZ C:\ProgramFiles\Nero\Nero7\Core
(=21:32:10 D:\temp=)
>@for /f "skip=2 tokens=2*" %i in (D:\temp\nerovistanospace.txt) do @echo set "neropath=%~pnxj" & @echo set "nerodrive=%~dj"
set "neropath=\ProgramFiles\Nero\Nero7\Core"
set "nerodrive=C:"
Können wir dann bitte bitte bitte diesen Kaugummithread schliessen..? *bettel*
Grüße Biber
P.S. Besser Urlaub am Onegasee als Arbeiten in Redmond...
Hallo onegasee!
Damit auch bei der Batchvariante der Pfad mit einem Backslash endet, könntest Du folgende Zeile ergänzen:
Damit entfällt dann die Notwendigkeit einer Überprüfung in der "progversion.VBS" und Du kannst den bisherigen Code beibehalten.
Grüße
bastla
Damit auch bei der Batchvariante der Pfad mit einem Backslash endet, könntest Du folgende Zeile ergänzen:
if [%NeroPath:~-1%] neq [\] set "NeroPath=%NeroPath%\"
Grüße
bastla
...oder, wenn denn auf jeden Fall ein Backslash am Ende des %neropath%'s sein soll...
[Bibervariante]: .... dann füg doch einfach immer einen an. Was soll's.
Dem CMD-Interpreter ist es vollkommen egal, ob er die Zeile
..ob ein oder zwei Backslashes am Pfad-Ende sind bei EXIST, MOVE, COPY...etc ist vollkommen Banane.
Und für Perfektionisten gibt es ja die bastla-Variante "if [%NeroPath:~-1%] neq [\].."
Gruss
Biber
[Bibervariante]: .... dann füg doch einfach immer einen an. Was soll's.
Dem CMD-Interpreter ist es vollkommen egal, ob er die Zeile
if exist "%nerodrive%\%neropath%\nero.exe" ....
auflöst zu:if exist "c:\programme\Nero\Nero 7\nero.exe" ....
-oder-if exist "c:\\programme\Nero\Nero 7\\nero.exe" ....
..ob ein oder zwei Backslashes am Pfad-Ende sind bei EXIST, MOVE, COPY...etc ist vollkommen Banane.
Und für Perfektionisten gibt es ja die bastla-Variante "if [%NeroPath:~-1%] neq [\].."
Gruss
Biber