AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Aktuelles Environment für Dienstemanager bzw. Dienst überneh
Thema durchsuchen
Ansicht
Themen-Optionen

Aktuelles Environment für Dienstemanager bzw. Dienst überneh

Ein Thema von aeberhard · begonnen am 5. Nov 2007 · letzter Beitrag vom 17. Sep 2013
Antwort Antwort
aeberhard

Registriert seit: 5. Nov 2007
Ort: München
4 Beiträge
 
#1

Re: Aktuelles Environment für Dienstemanager bzw. Dienst übe

  Alt 7. Nov 2007, 09:54
Hallo hathor,

habe es soeben ausprobiert. Leider kein Erfolg.
So wie es aussieht erben die Dienste von der services.exe das Environment.
Und das bleibt eben bis zum Reboot unverändert.

Trotzdem Danke!
Andreas
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

AW: Aktuelles Environment für Dienstemanager bzw. Dienst überneh

  Alt 16. Sep 2013, 22:43
Nachtrag fast 6 Jahre später (Wie die Zeit vergeht!):
Environment PATH hat unterschiedliche Einträge bei SYSTEM und USER etc.

Hat jemand eine Idee, wie man beide synchronisieren kann?

Beispiel: Im CMD-Fenster kann ich folgenden String auslesen:
PATH=
C:\DELPHI\RAD Studio\6.0\bin;C:\Users\Public\Documents\RAD Studio\6.0\Bpl;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\ System32\Wbem;C:\Windows\System32\WindowsPowerShel l\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files (x86)\QuickTime\QTSystem\

Ändern mit: path test
PATH=test

Mit dem Delphi-Code:
Memo1.lines.add(GetEnvironmentVariable('PATH'));

bekomme ich immer noch den langen String von oben.

Welchen Delphi-Code muss ich verwenden, um auch im CMD-Fenster den langen String wieder herzustellen?
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Aktuelles Environment für Dienstemanager bzw. Dienst überneh

  Alt 17. Sep 2013, 06:33
CMD verhält sich da so sandbox artig.
Schau mal, ob dir
Code:
setx
weiterhilft.
http://technet.microsoft.com/en-us/l.../cc755104.aspx
Gruß, Jo
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: Aktuelles Environment für Dienstemanager bzw. Dienst überneh

  Alt 17. Sep 2013, 14:52
Vielen Dank für den Link - werde mir die Einzelheiten mal anschauen...

Heute sieht die Sache wieder anders aus:
Wenn ich in Win 8 über den Start-Button (Classic Shell) cmd.exe aufrufe,
bekommt die Titelzeile den Text 'C:\Windows\System32\cmd.exe'.
Der Inhalt von PATH enthält den langen String, wie oben gezeigt.

Wenn ich ein CMD-Fenster über Delphi mit
'ShellExecute(Handle, 'runas', 'cmd.exe', nil, nil, SW_SHOWNORMAL);' starte,
bekommt die Titelzeile den Text 'C:\Windows\SysWOW64\cmd.exe'.
Der Inhalt von PATH enthält den gleichen langen String.

Wahrscheinlich hat Windows 8 den alten String wieder hergestellt und PATH=test gelöscht.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Aktuelles Environment für Dienstemanager bzw. Dienst überneh

  Alt 17. Sep 2013, 16:12
Also mir ist nicht ganz die Sequenz Deiner Beispiele klar, daher:
Das Ändern von Umgebungsvariablen innerhalb einer CMD.EXE persistiert den Wert nicht auf das OS.
Wird der Kommandozeileninterpreter geschlossen, ist er mitsamt der geänderten ENV Variable futsch.
Das müsste zumindest für beide Beispiele in Deinem letzten Post gelten.
Dass jenachdem 32 oder 64bit Varianten des Interpreters gestartet werden, ist bemerkenswert, für die fehlende Persistierung aber unerheblich.
Das Setzen der Variable Path in cmd.exe und anschließende Abfragen in Delphi zeigt keine Änderung, weil beide in unterschiedlichen Umgebungen laufen.
Erst ein Kompilat, das den Wert abfragt und in der CMD.EXE Umgebung gestartet wird, nachdem die Änderung gemacht wurde, müsste das anzeigen.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz