Umgebungsvariablen speichern[ERLEDIGT]

Von der Installation bis zur Auslieferung der Applikation

Moderator: Moderatoren

Antworten
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von Muecke »

Hallo


Ist es möglich einen Wert anzuhängen in der Systemvariablen ohne ein Installationsprogramm auszuführen?
Alaska macht dies ja auch, aber eben mit einem Install Programm.

Gruss Thomas
Zuletzt geändert von Muecke am Di, 04. Sep 2012 16:30, insgesamt 1-mal geändert.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Umgebungsvariablen speichern

Beitrag von georg »

Hallo,


Du könntest es mit Thomas Braun's Registry Class versuchen. Da es die Umgebungsvariablen auf User-Ebene gibt (\HKEY_CURRENT_USER\ENVIRONMENT) sowie auf Rechner-Ebene (\HKEY_LOCAL_MACHINE\CurrentcontrolSet\Control\Session Manager\Environment) solltest Du überlegen, welche Du anpassen willst.

Dann den alten Wert einlesen, ändern, und zurückschreiben. Das sollte es gewesen sein.


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von Muecke »

Georg

Geht leider nicht, keine schreibzugriffe( XbpReg:SetValue )


Gruss Thomas
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Umgebungsvariablen speichern

Beitrag von georg »

Hallo, Thomas -


Du schreibst zu wenig über das Umfeld. Wenn Dein Programm eine solche Zuweisung braucht, geht es eventuell über eine Batch-Datei, die dann auch Dein Programm startet:

Code: Alles auswählen

set PATH=%PATH%;c:\irgendwo
set MEINE_OPTION=ON
xbase-pgm.exe
exit

Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von Muecke »

Nein es geht darum, dass ich nicht bei jedem Kunden auf den PC zugreifen muss,
um Systemvariablen zu erfassen.
Kann ich dies vielleicht auch mit einem Batch erledigen?

Gruss Thomas
Dateianhänge
t1.jpg
t1.jpg (11.36 KiB) 15220 mal betrachtet
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von brandelh »

WAS genau verstehst du unter SYSTEMVARIABLEN ?
Wenn es nur um die aus der CMD geht, kann man diese komplett in eine Datei schreiben und einlesen:

Code: Alles auswählen

CMD-BOX: SET > TEXT.TXT 
das kann man mit runshell erledigen.
Wenn du z.B. den PATH abfragen willst, das geht auch direkt:

Code: Alles auswählen

cPath := Getenv("PATH")
Gruß
Hubert
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von Muecke »

Hallo Hubert

Ich muss in das Feld -> Variable = Doku schreiben( Name Umgebungsvariable)
Feld -> Wert = d:\dha schreiben(Wert Umgebungsvariable)

Mit Setenv kann ich ja den Wert verändern, aber wie erstelle ich eine neue Umgebungsvariable????

Gruss Thomas
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Umgebungsvariablen speichern

Beitrag von georg »

Hallo, Thomas -


was genau willst Du machen?

Beispiel: Aufruf einer Batch-Datei, die etwas druckt.

Code: Alles auswählen

nHandle := fCreate("runme.bat")
if nHandle > 0
  cLine := "SET DOKU=C:\HA" + CRLF
  fWrite(nHandle, cLine, Len(cLine))
  cLine := "RR reportxyz.rpx" + CRLF
  fWrite(nHandle, cLine, Len(cLine))
  cLine := "EXIT"
  fWrite(nHandle, cLine, Len(cLine))
  fClose(nHandle)
  RunShell(...)
else
  ConfirmBox()
endif
Eine Umgebungsvariabel definierst Du in der Eingabeaufforderung (oder in einer Batch-Datei) durch SET wert=, danach ist diese Variable in DEM PROZESS, IN DEM SIE DEFINIERT WURDE! sichtbar. Schliesst Du die Eingabeaufforderung oder endet die Batchdatei, ist die Variable auch weg.


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von Tom »

aber wie erstelle ich eine neue Umgebungsvariable????
Auch mit SetEnv():

Code: Alles auswählen

SetEnv('Meins','Isses')
? GetEnv('Meins') // 'Isses'
Allerdings ist das mit Vorsicht zu behandeln; der Kommandoprozessor von Windows 7 beispielsweise holt sich immer wieder sein eigenes Environment (das man aber auch verändern kann - Registry). Dort würde man "Meins" also nicht finden.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von brandelh »

Muecke hat geschrieben:Mit Setenv kann ich ja den Wert verändern, aber wie erstelle ich eine neue Umgebungsvariable????
laut Doku ist das möglich, solange die Abfrage aus diesem Prozess heraus gestartet wird:
Handbuch hat geschrieben:Die Funktion Setenv() wird verwendet, um Umgebungsvariablen des Betriebssystems für den aktiven Prozeß neu zu definieren oder den Inhalt bestehender Umgebungsvariablen zu ändern. Diese Änderungen gelten nicht für andere Prozesse, d.h. geänderte Umgebungsvariablen sind nur für das Xbase++ Programm sichtbar, das Setenv() ausführt. Falls ein neuer Prozeß mittels RunShell() gestartet wird, erbt er die Umgebungsvariablen des aktiven Prozesses. Setenv() ist also geeignet, die Umgebungsvariablen für einen neu gestarteten Prozeß zu definieren.
Gruß
Hubert
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von Muecke »

Ich versuche dies mal anders zu formulieren

ich bekomme von einem anbieter eine xml datei die ich auf dem pc einfügen muss.
der hersteller gibt mir aber vor, wie die variable heissen muss z.b. KASSE_CONFIG.
so nun muss ich bei jedem kunden eine neue variable erfassen die KASSE_CONFIG heisst mit
dem wert "d:\dha\config.xml
der anbieter braucht dies um gewisse configurationen für seine schnittstelle auszulesen.

Gruss Thomas
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von brandelh »

Dazu brauchst du Schreibrechte auf die Registriy !
Bei Pablo und hier irgendwo auch gibt es ein Beispiel, wie ein Programm sich Admin-Rechte besorgen kann (natürlich muss der Anwender die Kennwörter eingeben).
Bei deinem PC kannst du das für alle User eintragen und nachsehen wo der Inhalt gelandet ist.

ODER du erstellst mit regedit eine Registrierungsdatei mit genau diesem Eintrag.
Ein doppelklick installiert dann den Inhalt (nach Eingabe von Admin Kennwort).
Gruß
Hubert
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern

Beitrag von Muecke »

Hubert

dan war ich doch richtig mit der reg klasse.
ich denke ich mache mir ein batch und gebe dies jedem kunde zum installieren.

besten dank.

gruss thomas
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von brandelh »

Ich habe mir hier eben mal schnell eine SYSTEMVARIABLE MySystem erstellt und mit Inhalt gefüllt.
Regedit meldet diese genau hier:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Ob man nun einfach nur "CurrentControlSet" setzen muss um eines der Controllsets zu ändern, weiß ich nicht.
Ausprobieren hilft bestimmt ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von Tom »

Environmentvariablen stehen ab Windows XP in HKEY_CURRENT_USER\Environment. Dort findet man zum Beispiel die LIB-Settings der Alaska-Installation. Für HKEY_CURRENT_USER sollte eigentlich immer Schreibrechte existieren, sonst wäre diese Gruppe nämlich sinnlos. Was ich dort setze, kann ich auch über GetEnv() abholen.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von brandelh »

Wenn das Programm aber für alle User einen Eintrag haben soll, muss es unter System ;-)
Gruß
Hubert
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von Muecke »

ich habe auch noch ein

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\Environment

bei allen steht das gleiche drin !!!???

Gruss Thomas
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von georg »

Hallo,


seht Euch bitte den zweiten Eintrag in diesem Thread an ...

CurrentControlSet ist das aktive ControlSet, die anderen sind (ältere) Kopien.

Eintragungen unter HKEY_CURRENT_USER gelten nur für den gerade angemeldeten Benutzer. Werden die Änderungen für diesen Benutzer vorgenommen, gelten sie nicht, wenn sich ein anderer am gleichen PC anmeldet, daher sollte man in diesem Fall auf die Einträge unter HKEY_LOCAL_MACHINE zuürckgreifen, denn die gelten dann für alle Benutzer.

Es kommt sonst vor, dass es bei dem einen Benutzer funktioniert und dem anderen nicht, und man sich einen Wolf sucht, wo denn wohl der Unterschied ist.


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von Tom »

Hallo, Georg.

Thomas will relative Pfade und Dateinamen speichern, das macht für die lokale Maschine nicht sehr viel Sinn. Möglich, dass alles im Glücksfall mit den Benutzereinstellungen übereinstimmt, aber keineswegs sicher.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umgebungsvariablen speichern[ERLEDIGT]

Beitrag von brandelh »

Tom hat geschrieben:Hallo, Georg.

Thomas will relative Pfade und Dateinamen speichern, das macht für die lokale Maschine nicht sehr viel Sinn. Möglich, dass alles im Glücksfall mit den Benutzereinstellungen übereinstimmt, aber keineswegs sicher.
wieso relative Pfade ?
Oben steht dies:
Muecke hat geschrieben:Ich muss in das Feld -> Variable = Doku schreiben( Name Umgebungsvariable)
Feld -> Wert = d:\dha schreiben(Wert Umgebungsvariable)
d:\dha ist nicht relativ ;-)
Gruß
Hubert
Antworten