darkzonesd
Goto Top

Batch Systemvariablen - unterscheiden sich pro User?

Guten Morgen zusammen,

ein Mitarbeiter aus unserem Entwicklungsteam ist momentan dabei in einem Batch Script Dateiendung mit einem Programm zu assoziieren und ist dann bei der Ausführung des Scripts auf einen merkwürdigen Fehler gestoßen.
ASSOC .sldprt=SLDPRT-Datei
FTYPE SLDPRT-Datei="%CommonProgramFiles%\eDrawings2023\eDrawings.exe" "%%1"  
Nämlich gibt dieses Batch Skript, auf dem selben Computer, zwei unterschiedliche Werte aus wenn man die Systemvariable %CommonProgramFiles% benutzt. Der einzige unterschied bei der Ausführung, es war ein anderer User angemeldet.

Die Ausgabe war einmal "C:\Program Files (x86)\Common Files" und dann wie gewünscht "C:\Program Files\Common Files".

Ist das ein "Intended Feature" und ich versteh nur den Sinn dahinter nicht, oder stimmt da wirklich etwas nicht?

Hier sind noch ein paar Systeminformationen.

Hostname: SIN5805
Betriebssystemname: Microsoft Windows 10 Pro
Betriebssystemversion: 10.0.19042 Nicht zutreffend Build 19042
Betriebssystemhersteller: Microsoft Corporation
Betriebssystemkonfiguration: Mitglied der Domäne/Arbeitsgruppe

Grüße

Florian

Content-ID: 8134908411

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

Ausgedruckt am: 24.11.2024 um 02:11 Uhr

NordicMike
NordicMike 14.08.2023 um 09:35:06 Uhr
Goto Top
Das ist doch gar keine Systemvariable. Es ist eine normale Variable, die auch beim Installieren oder manuell hinzugefügt werden kann - also Benutzerbezogen. Ich vermute unter einem der beiden Benutzer wurde das eDrawings installiert.
TwistedAir
TwistedAir 14.08.2023 um 09:56:39 Uhr
Goto Top
Moin,

komisch, auf meinem Win10-System gibt es die Variable %COMMONFILES% nicht - meinst du vielleicht eine von diesen?
TwistedAir>set | findstr "Common"  
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files

Gruß
TA
DarkZoneSD
DarkZoneSD 14.08.2023 um 10:54:33 Uhr
Goto Top
Entschuldigt, ich habe die Variable im Beitrag falsch eingetragen. Sollte eigentlich %COMMONPROGRAMFILES% lauten.
7907292512
Lösung 7907292512 14.08.2023 aktualisiert um 11:06:12 Uhr
Goto Top
Die Ausgabe war einmal "C:\Program Files (x86)\Common Files" und dann wie gewünscht "C:\Program Files\Common Files".
Dann hat man die CMD bei einem User aus C:\windows\SysWOW64 und das andere mal aus C:\windows\system32 ausgeführt.

Stichwort Filesystem Redirection bei 32- und 64bit Prozessen!
https://learn.microsoft.com/de-de/windows/win32/winprog64/file-system-re ...


Gruß siddius
mayho33
mayho33 16.08.2023 um 08:48:25 Uhr
Goto Top
Servus @DarkZoneSD

2 Dinge zu diesem und zukünftige Threads:

Für die Zukunft:
Es ist sehr löblich den unterstützenden User mit einem "gelöst" zu markieren. Das gleiche musst du aber auch bei dir selbst machen. Andernfalls wird deine Frage nicht als gelöst markiert. Siehe:
Wie kann ich einen Beitrag als gelöst markieren?

Ergänzend zu deiner Frage:
Wie @7907292512 schon geschrieben hat kommt es darauf an ob einen Variable über eine 32-Bit-CMD oder eine 64-Bit-CMD abgefragt wird. Das ganze nennt sich dann "process bitness" das ist nicht nur bei der CMD so, sondern bei jedem Prozess der unter Windows läuft.

Alle Variablen kannst du mit dem Befehl...
Net use
...abfragen

Je nachdem ob du die C:\windows\SysWOW64\cmd.exe (32-Bit) oder C:\windows\system32\cmd.exe (64-Bit) verwendest, wirst du sehen, dass sich das Ergebnis unterscheidet.

Wenn du Windowstaste => cmd => Entertaste eingibst, wählt Windows immer den "systemnähesten" Prozess, bei einem 64-Bit OS also einen 64-Bit-Prozess, falls verfügbar. Nicht immer sind 32- und 64-Bit-Programme parallel vorhanden.

Grüße!
DarkZoneSD
DarkZoneSD 16.08.2023 um 09:41:14 Uhr
Goto Top
Moin
Andernfalls wird deine Frage nicht als gelöst markiert. Siehe:
Ist das so? Ich könnte schwören ich habe das nie anders gemacht und meine alten Threads wurden als gelöst markiert.. 🤔

Alle Variablen kannst du mit dem Befehl...
Net use
...abfragen
Sicher mit Net use? Ich dachte der wird nur zur Rescourcen Anbindung / Trennung genutzt.

Wenn du Windowstaste => cmd => Entertaste eingibst, wählt Windows immer den "systemnähesten" Prozess, bei einem 64-Bit OS also einen 64-Bit-Prozess, falls verfügbar. Nicht immer sind 32- und 64-Bit-Programme parallel vorhanden.
Das macht Sinn.

Danke.
Grüße!
Gruß

Florian
mayho33
mayho33 16.08.2023 aktualisiert um 10:44:54 Uhr
Goto Top
Zitat von @DarkZoneSD:

Moin
Andernfalls wird deine Frage nicht als gelöst markiert. Siehe:
Ist das so? Ich könnte schwören ich habe das nie anders gemacht und meine alten Threads wurden als gelöst markiert.. 🤔
Zumindest hatte ich deinen Beitrag bis vorhin nicht als gelöst in der Liste 🤷‍♂️🤷‍♂️

Alle Variablen kannst du mit dem Befehl...
Net use
...abfragen
Sicher mit Net use? Ich dachte der wird nur zur Rescourcen Anbindung / Trennung genutzt.
Ach verdammt! Ich meinte
set
bitness

Kommt davon, wenn man 4 Sachen gleichzeitig macht und noch schnell nebenbei am Mobile schreibt 🤦‍♂️

EDIT:
Und weil es ja um die Common... ging:
bitness2
DarkZoneSD
DarkZoneSD 16.08.2023 um 16:27:03 Uhr
Goto Top
Zumindest hatte ich deinen Beitrag bis vorhin nicht als gelöst in der Liste 🤷‍♂️🤷‍♂️
Das ist richtig so, ich habe es nachträglich geändert. Danke für den Hinweis face-smile

Ach verdammt! Ich meinte
set
bitness

Kommt davon, wenn man 4 Sachen gleichzeitig macht und noch schnell nebenbei am Mobile schreibt 🤦‍♂️
Passiert den besten face-smile
EDIT:
Und weil es ja um die Common... ging:
bitness2
Habe ich kurz vor deinem Comment erst selber ausprobiert, da ist mir ein Licht aufgegangen.

Danke für die Hilfe Leute.

Grüße