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-ID: 279874

Url: https://administrator.de/forum/systemvariable-in-abhaengigkeit-des-os-setzen-32-64-bit-279874.html

Ausgedruckt am: 02.04.2025 um 09:04 Uhr

Dirmhirn
Dirmhirn 11.08.2015 um 15:01:30 Uhr
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
killtec
killtec 11.08.2015 um 15:03:25 Uhr
Goto Top
Meinst du das funktioniert auch mit dem Programmaufruf? Also wenn ich damit dann direkt Acrobat aufrufe?

Gruß
Dirmhirn
Dirmhirn 11.08.2015 um 15:09:24 Uhr
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?
killtec
killtec 11.08.2015 um 16:00:28 Uhr
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ß
Dirmhirn
Dirmhirn 11.08.2015 aktualisiert um 16:08:29 Uhr
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.
killtec
killtec 11.08.2015 um 16:07:28 Uhr
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ß
Nemo-G
Nemo-G 12.10.2015 aktualisiert um 20:30:29 Uhr
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