killtec
Goto Top

Systemvariable in Abhängigkeit des OS setzen (32 - 64 Bit)

Hallo zusammen,
ist es möglich eine Systemvariable im Abhängigkeit des Betriebssystems, bzw der Architektur um genau zu sein, zu setzen?
Ich muss eine Variabe zur AcroRd32.exe anlegen. Das ganze jedoch als 32 Bit und 64 Bit.
Bsp.
32-Bit:
AdbRd=C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe

64-Bit:
AdbRD=C.\Program Files(x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe

Gedacht ist, dass ich das Programm dann via %AdbRD% aufrüfen kann.

OS: Windows 7 + 8.1

Danke.

Content-Key: 279874

Url: https://administrator.de/contentid/279874

Printed on: April 16, 2024 at 13:04 o'clock

Member: Dirmhirn
Dirmhirn Aug 11, 2015 at 13:01:30 (UTC)
Goto Top
Hi killtec,

für Windows 7:
REM get architectur and save to OSARCH
IF %PROCESSOR_ARCHITECTURE% == x86 (
   SET OSARCH=32
) ELSE (
   SET OSARCH=64 
)

Ob das bei Windows 8 auch noch geht, kann ich nicht testen.

sg Dirm
Member: killtec
killtec Aug 11, 2015 at 13:03:25 (UTC)
Goto Top
Meinst du das funktioniert auch mit dem Programmaufruf? Also wenn ich damit dann direkt Acrobat aufrufe?

Gruß
Member: Dirmhirn
Dirmhirn Aug 11, 2015 at 13:09:24 (UTC)
Goto Top
hm was willst du genau machen? auf einem 64bit System einmal Acrobat als 32bit Version oder als 64bit Version starten? In einer Variable soll dann abgelegt werden, welche Version läuft?
Member: killtec
killtec Aug 11, 2015 at 14:00:28 (UTC)
Goto Top
Nein, gedacht ist eine Variable, die man aufruft. Bei einem 64 Bit System soll diese halt in den Program Files(x86) Zeigen und bei einem 32 Bit eben nur in Program Files

Gruß
Member: Dirmhirn
Dirmhirn Aug 11, 2015 updated at 14:08:29 (UTC)
Goto Top
ok, aber wo rufst du die Variable auf?
entweder musst du sie dort eh erstellen - dann kannst du die obige Abfrage einfach einbauen.

oder du willst eine Systemvariable setzen. Dann fragst du das einfach beim Erstellen der Variable ab. Per GPP -> zielgruppenadressierung oder eben wieder ein Startup skript zb.

Oder willst du einfach einen Desktop shortcut verteilen? dann wieder GPP oder Skirpt.

btw. %PROCESSOR_ARCHITECTURE% ist vom aufrufenden Prozess abhängig. Ich habe das für ein Startup Skript genutzt. Wenn du das ein einem Skript benutzt, das ev. auf einem 64bit System als 32bit Prozess gestartet wird, dann ist die Anzeige falsch. Aber workarounds gibt es wenn du %PROCESSOR_ARCHITECTURE% googelst.
Member: killtec
killtec Aug 11, 2015 at 14:07:28 (UTC)
Goto Top
Die Variable wird aus einem anderem Programm aufgerufen. Aber ich denke mal, dass ich das anders löse, indem ich einen weiteren Startaufruf für 32 Bit mache.

Gruß
Member: Nemo-G
Nemo-G Oct 12, 2015 updated at 18:30:29 (UTC)
Goto Top
Meine Batches erkennen die Architektur in Win7 bis Win10 dadurch, indem ich prüfen lasse, ob eine Variable %ProgramFiles(x86)% existiert. Beispiel für Deine Fragestellung:
::Grundeinstellung auf 32 Bit
SET "AdbRd=%ProgramFiles%\Adobe\Reader 11.0\Reader\AcroRd32.exe"  
:: wenn %ProgramFiles(x86)%. existiert bzw NICHT leer ist, dann OS mit 64 Bit
IF NOT "%ProgramFiles(x86)%"==""   SET "AdbRd=%ProgramFiles(x86)%\Adobe\Reader 11.0\Reader\AcroRd32.exe"  
- Zuweisen von Variablen besser in Anführungszeichen setzen, da man Leerzeichen am Schluss gerne übersieht.
- Falls mal nicht das Laufwerk C: benutzt wird, ist man mit den Variablen zum Programmverzeichnis besser bedient
- Wie Dirmhirn schon treffend bemerkte, bringt die Abfrage auf %PROCESSOR_ARCHITECTURE% auf einem 64Bit-OS nicht das gewünschte Ergebnis, wenn sie aus einem 32Bit-Prozesss heraus aufgerufen wird.

Gruß, Nemo