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
GELÖST

Batch - Installationspfad wird nicht gefunden, wenn im Registry-Zweig eine Systemvariable enthalten ist - Fortsetzung

Frage Entwicklung Batch & Shell

Mitglied: onegasee59

onegasee59 (Level 2) - Jetzt verbinden

03.11.2008, aktualisiert 17.10.2012, 7846 Aufrufe, 12 Kommentare

IHallo,

ich nehme Bezug auf meinen Erst-Beitrag zum Thema auf http://www.administrator.de/frage/batch-installationspfad-wird-nicht-ge ... da den offensichtlich niemand mehr liest.

Ich konnte das Problem jetzt einkreisen.

01.
set "WMPTemp=%temp%\WMPPath.vbs" 
02.
echo strWMPPath = WScript.CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe\Path") > "%WMPTemp%" 
03.
echo If Right(strWMPPath,1) ^<^> "\" Then strWMPPath = strWMPPath ^& "\" >> "%WMPTemp%" 
04.
echo If Not Mid(strWMPPath, 2, 1) = ":" Then WScript.Quit(1) >> "%WMPTemp%" 
05.
echo WScript.Echo strWMPPath >> "%WMPTemp%" 
06.
for /f "tokens=1* delims=:" %%i in ('cscript //nologo "%WMPTemp%"') do set "WMPDrive=%%i:" & set "WMPPath=%%j" 
07.
del /f /s /q "%WMPTemp%" > nul
Entscheidend ist die 2. Zeile.

Sie ergibt bei mir für die Variable "strWMPPath":

unter XP = C:\Programme\Windows Media Player
unter WIN Vista = %ProgramFiles%\Windows Media Player

Wie bekomme ich obigem Codeschnippsel jetzt bei gebogen das es den echten Pfad auch unter Vista erzeugt.

So das es sowohl unter XP als auch Vista funktioniert und auch in Vista die Variablen "WMPDrive" und "WMPPath" echte Inhalte erhalten, also:
%WMPPath% --> WMP-Install-Pfad=\Programme\Windows Media Player\
%WMPDrive% --> WMP-Install-LW=C: (hier kann natürlich auch einen anderes LW stehen)

Danke
onegasee59
Mitglied: paulepank
03.11.2008 um 22:45 Uhr
Hallo onegasee59,

wollte mich eigenlich schon bei deinem ersten Thread beteiligen.
Da du aber nicht präzise geschrieben hast, für welche Betriebssysteme das gelten soll und ob
sogenannte Fremdprogramme zum Einsatz kommen dürfen, habe ich mich erst mal zurückgehalten.
Das sollte doch einem so erfahrenen Mitglied hier eigentlich nicht passieren

Wenn es dir immer nur noch darum geht eine 9,10 oder 11 als Ergebnis zu erhalten, benutze folgenden Code für WinXP und Vista
01.
@echo off 
02.
for /f "tokens=3 delims=,	 " %%i in ('reg query HKLM\Software\Microsoft\Mediaplayer\PlayerUpgrade^|findstr /i playerversion') do echo %%i
Wichtig ist der Delimiter:
Er besteht aus <Komma><Tab><Blank>

cu paulepank

EDIT: sollte man den Thread nicht eher nach Batch & Shell verschieben ?
Bitte warten ..
Mitglied: onegasee59
03.11.2008 um 23:31 Uhr
Hallo paulepank

erstmal Danke!
Ich dachte es wäre schon im ersten Thread klar geworden. Keine Zusatztools. Das Tool soll für XP und Vista nur per Batch und vbs erstellt werden.
Es geht auch NICHT um die Versionsprüfung die erfolgt im Anschluss. Die Syntax dafür funktioniert einwandfrei sowohl unter XP als auch Vista.

Das Tool macht wie folgt:

Zuerst erfolgt Prüfung auf Betriebssystem.
Wird nicht XP oder Vista erkannt, wird das Tool mit entsprechender Fehler-Meldung abgebrochen.
Wird XP oder Vista erkannt, aber nicht 32bit und nicht DE oder ENG, wird das Tool mit entsprechender Fehler-Meldung abgebrochen.
Dann soll es auf unbekannten XP/Vista System den tatsächlichen Installationspfad vom Windows Media Player finden.
Der obige Code funktioniert unter XP einwandfrei aber nicht unter Vista, weil unter Vista im Registryzweig und dessen Wert "Path" der Verweis auf das Installationsverzeichnis nicht im Klartext wie bei XP hinterlegt ist (in meinem Fall als "C:/Programme/Windows Media Player"), sondern als "%ProgramFiles%/Windows MediaPlayer"!!!

Diesen Inhalt von "%ProgramFiles%" bekomme ich nicht extrahiert und dadurch ergibt sich mit obigem Code unter Vista ein Fehler bei der realen Pfaderkennung:

edit am 04.11.2008 08:42 Uhr
Wenn Du magst speicher dir bitte:
strWMPPath = WScript.CreateObject("WScript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe\Path")
WScript.Echo strWMPPath
If Right(strWMPPath,1) <> "\" Then strWMPPath = strWMPPath & "\"
If Not Mid(strWMPPath, 2, 1) = ":" Then WScript.Quit(1)
WScript.Echo strWMPPath
als "WMPpath.vbs"

Lass es mal unter XP und dann unter Vista laufen. Die Ausgabe zeigt anschaulich was ich meine:

Unter XP erzeugt "WMPpath.vbs" die Ausgabe: C:\Programme\Windows Media Player
Unter Vista erzeugt "WMPpath.vbs" die Ausgabe: %ProgramFiles%\Windows Media Player

Das bedeutet mit dem Code, hier im Thread ganz oben:
Unter XP erfolgt von "strWMPPath" die Übergabe an "WMPTemp" von: C:\Programme\Windows Media Player
Unter Vista erfolgt von "strWMPPath" die Übergabe an "WMPTemp" von: %ProgramFiles%\Windows Media Player

Das ergibt vom for-Zweig folgende Auswertung:

für XP:
%WMPPath% --> gefundener WMP-Install-Pfad=\Programme\Windows Media Player\
%WMPDrive% --> gefundenes WMP-Install-LW=C:
bei XP also wie gewünscht.

für Vista
%WMPPath% --> gefundener WMP-Install-Pfad=
%WMPDrive% --> gefundenes WMP-Install-LW=
Bei Vista also Fehler

Wie bekomme ich die "Kuh vom Eis"?

onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 00:14 Uhr
Hallo onegasee59,

bei deiner VBS-Lösung kann ich dir leider nicht helfen.
du wolltest u.A. eine Lösung per Batch für die Version. Die habe ich dir gegeben und sie läuft auf XP und Vista.

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 00:26 Uhr
Vielen Dank paulepank für deine Mühe,

aber ich glaube Du verstehst mich doch nicht.
Deine Lösung ist Super Ok, nutzt mir aber leider nichts.
Für die Versionsprüfung habe ich bereits ein unter XP und Vista 100% funktionierendes Codeschnippsel innnerhalb der Batch. Ich benötige tatsächlich zwingend zuerst die Syntax für das Finden des _tatsächlichen_ Installationspfades von Windows Media Player die dann nicht nur für XP sondern auch für Vista funktioniert. Sicher nur ne Kleinigkeit, wenn man weiß wie...

Dann hoffe ich mal weiter... Hiiiiiiiilfe.......baaaaaaaaastla, Biiiiiiiiiiber

Gruß und Danke nochmal.
onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 08:15 Uhr
... nach einer Mütze voll Schlaf

  • deinen VBS-Code habe ich ausprobiert. Ich bekommme sowohl bei XP als auch bei Vista ein leeres Fenster angezeigt.
  • Frage - was ist an folgender Aussage falsch:
der Programmpfad wird durch
01.
echo %ProgramFiles%\Windows Media Player
angezeigt. Ob Vista oder XP, ob 27 oder 68 Bit, ob japanisch oder finnisch - der WMP steht immer im Verzeichnis "Windows Media Player". Das ist im System fest verdratet. Einzig das Laufwerk variiert.
  • Brauchst du das Laufwerk auch einzeln ?
  • Damit du auch Hilfe von anderen bekommst, solltest die den Thread w.o. beschrieben verschieben (lassen).

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 08:50 Uhr
Morgen,

Oh, Sorry. Der Code ist falsch - ich korrigiere oben - Jetzt stimmt es.

Die 2. Zeile ist eigentlich nicht erforderlich - geht aber nicht anders ,um zu zeigen was bei der Variable rauskommt.
Bei Vista erscheint nämlich ohne Zeile 2 gar nichts, weil wie schon gesagt "%ProgramFiles%\Windows Media Player" im weiteren Scriptverlauf nicht ausgewertet werden kann.
Grund - der Inhalt von %ProgramFiles% (bei Vista) ist für das Script einfach nur eine Zeichenfolge keine Variable.

Bei mir (Dualbootsytem C: = XP / G: = Vista) ergibt das als Ausgabe von Zeile 2 und letzte Zeile 5

Screenshot - vbs-Variante - XP = http://www.der-wmp.de/extra/xyz/WMPPath-vbs-Zeile-2_XP.jpg http://www.der-wmp.de/extra/xyz/WMPPath-vbs-Zeile-5_XP.jpg
Screenshot - vbs-Variante - Vista = http://www.der-wmp.de/extra/xyz/WMPPath-vbs-Zeile-2_Vista.jpg für Zeile 5 - keine Anzeige bei Vista

Ja - LW der WMP-Installation benötige ich
Ja - Antrag bei Moderatoren auf Threadverschiebung habe ich gestern gemacht.

Übrigens, so sieht es mit einer Batchvariante aus:

01.
@echo off && setlocal 
02.
mode 120,24 
03.
rem Variante von Biber - WMP-Installationspfad finden, Abbruch wenn keine Installation von WMP 9 (oder hoeher) gefunden wird 
04.
set WMPkey="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe" 
05.
for /f "skip=2 tokens=2*" %%i in ('reg query %WMPkey% /v Path') do set "WMPPath=%%~pnxj" & set "WMPDrive=%%~dj" 
06.
if [%WMPPath:~-1%] neq [\] set "WMPPath=%WMPPath%\" 
07.
echo. 
08.
echo. 
09.
echo WMP-Pfad    = %WMPPath% 
10.
echo WMP-LW      = %WMPDrive% 
11.
echo WMP-LW/Pfad = %WMPDrive%%WMPPath% 
12.
echo. 
13.
echo. 
14.
pause 
15.
endlocal
Screenshot - cmd-Variante - XP = http://www.der-wmp.de/extra/xyz/WMPPath-cmd_XP.jpg
Screenshot - cmd-Variante - Vista = http://www.der-wmp.de/extra/xyz/WMPPath-cmd_Vista.jpg

onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 09:56 Uhr
Hallo,
...und würdest du jetzt auf meine Frage (Aussage) eingehen ?
Falls du unbedingt alles mit vbs machen willst, klinke ich mich jetzt hier aus.

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 10:21 Uhr
Hhmm, ich habe doch schon alles beantwortet!

1. Ich brauche den Installationspfad als Variable - NICHT als feste Wertvorgabe.
D. h. ich muss erreichen das unter Vista der Inhalt der System-Variablen "%ProgramFiles%" aus dem gefundenen Installationspfad im vbs-Script oder der Batch verarbeitet wird und nicht die reine Zeichenkette "%ProgramFiles%"
Dieses Variablen-Problem ist zwar aktuell jetzt erst unter Vista aufgetaucht, könnte aber, bei entsprechend vorhandenem Pfad mit solch einer Systemvariablen, auch auf XP so auftauchen.
Die benötigte Lösung soll daher Universal funktionieren...
1.1. Bei fester Pfadangabe...
1.2. Bei Systemvariable...
...im Installationspfad = Wert "Path" im Registry-Zweig: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\wmplayer.exe"

2. Ich brauche das LW einzeln als Variable - NICHT als feste Wertvorgabe.
3. Ich habe eine Batch-Variante und deren Ergebnis auch noch nachgeschoben.

onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 10:43 Uhr
auch Hhmm,
ich glaube diesmal hast du mich mißverstanden.
Das install-dir ist fest vorgegeben und muß nicht erst ermittelt werden.
3. Ich habe eine Batch-Variante und deren Ergebnis auch noch nachgeschoben.

das ist nicht gut, denn es erfolgt keine neue Benachrichtigungsmail

Aber bitte , dann eben so

01.
@echo off 
02.
for /f "tokens=3 delims=,	 " %%i in ('reg query HKLM\Software\Microsoft\Mediaplayer\PlayerUpgrade^|findstr /i playerversion') do echo Version=%%i 
03.
set WMP="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\mediaplayer" 
04.
for /f "tokens=3*" %%i in ('reg query %WMP% /v "installation directory"^|findstr /i /c:"installation directory"') do echo Install-dir=%%~pnxj & echo LW=%%~dj
jetzt noch Wünsche ? oder anders gefragt - ist die Kuh jetzt vom Eis ?

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 11:44 Uhr
Hallo paulepank,

erstmal herzlichst Danke für die Mühe,

Das install-dir ist fest vorgegeben und muß nicht erst ermittelt werden.
Klar, für den WMP und die sonstigen MS-eigenen Programme/Komponennten funktioniert das. Bei Fremdsoftware aber wie z.. Bsp für Nero nicht mehr.
Da ich den Code ja universell gestalten/einsetzen will [1], suche ich eben die Variante über Variablen auslesen und benötige daher die Daten aus:

Wert "Path" im Registry-Zweig: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\

3. Ich habe eine Batch-Variante und deren Ergebnis auch noch nachgeschoben.

das ist nicht gut, denn es erfolgt keine neue Benachrichtigungsmail
Ja Sorry, hab es gemacht auf Grund Deiner Bemerkung "Falls du unbedingt alles mit vbs machen willst, klinke ich mich jetzt hier aus."

jetzt noch Wünsche ? oder anders gefragt - ist die Kuh jetzt vom Eis ?
Für WMP zuerstmal ja - Funktioniert einwandfrei unter XP/Vista.
[1]
Dennoch suche ich immer noch die Variablen-Variante oder den Grund warum (egal ob vbs oder batch) beim finden einer Systemvariablen (im genannten Registry-Zweig) nur deren reine Zeichenkette, statt deren Inhalt übergeben wird. Warum also, wie im hier vorliegend Fall nur "%\ProgramFiles%\Windows Media Player" anstatt dem echten Pfad "G:\Program Files\Windows Media Player" übergeben wird?

Hast Du dazu auch einen Idee?

Nicht böse sein - bitte nicht als undankbar verstehen.
Im Gegenteil dank Deiner Lösung könnte ich zumindest für den WMP erstmal weitermachen und das Gesamt-Tool fertigstellen.

Gruß
onegasee59
Bitte warten ..
Mitglied: paulepank
04.11.2008 um 12:16 Uhr
Hallo ,

Hast Du dazu auch einen Idee?

leider nein - vbs null Ahnung

Nicht böse sein - bitte nicht als undankbar verstehen.

nö, nur enttäuscht
Warum hast in der Überschrift eine Lösung für den WMP gesucht und schreibst nicht von Anfang an was du eigentlich willst. Für eine Variante aller oder einiger installierter Programme wäre der Ansatz ganz anders. Wir diskutieren hier einen Tag lang rum und dann sowas. Das ist etwas, was ich nicht akzeptieren kann.
Was ist eigentlich so schwer daran das Problem in der Überschrift und generell genau zu beschreiben ? Die Frage war jetzt rein rhetorisch.

cu paulepank
Bitte warten ..
Mitglied: onegasee59
04.11.2008 um 12:26 Uhr
Hallo paulepank,

muss ja keine VBS-Lösung sein.

> Nicht böse sein - bitte nicht als undankbar verstehen.

nö, nur enttäuscht
Warum hast in der Überschrift einen Lösung für den WMP
gesucht und schreibst nicht von Anfang an was du eigentlich willst.

Der WMP war nur der Aufhänger auf Grund eine geplanten Tools.
Bitte um Entschuldigung, aber ich hatte mich so in das Problem verbohrt, das ich wohl verkannt habe wie es beim Gegenüber tatsächlich ankommt.

Was ist eigentlich so schwer daran das Problem in der Überschrift und generell genau zu beschreiben

Ich versuche es

onegasee59
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Systemvariable über Batch nicht abrufbar!
gelöst Frage von BrotkastenBatch & Shell7 Kommentare

Guten Morgen zusammen, ich habe testhalber mehrere Systemvariablen angelegt, die ich in zukünftigen Batches verwenden möchte (Über System -> ...

Batch & Shell
Batch: Wenn Buchstaben im Wort enthalten dann......
gelöst Frage von Luckyman7471Batch & Shell7 Kommentare

Hallo Leute, Ich würde gerne folgendes realisieren: Wenn im lokalen Computernamen die Buchstaben "fa" enthalten sind dann soll ein ...

Windows 7
Systemvariable Hostname
gelöst Frage von Thor01Windows 73 Kommentare

Hallo, mal eine vielleicht etwas doofe Frage: Wofür gibt es den eigentlich die Systemvariable"Hostname" ? Hab ich jetzt das ...

Batch & Shell
BATCH: Leerzeichen im Registry Pfad
gelöst Frage von 118710Batch & Shell1 Kommentar

Hallo zusammen, dies ist mein erste Beitrag hier und ich hoffe ich bin richtig :P So! Erst ein mal ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 3 StundenVerschlüsselung & Zertifikate

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 14 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 16 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...