AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Path aktualisieren nach Update

Ein Thema von Duffy · begonnen am 21. Jun 2003 · letzter Beitrag vom 21. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#1

Path aktualisieren nach Update

  Alt 21. Jun 2003, 14:32
Hallo alle zusammen,
nachdem ich die Environmentvariable "Path" unter Windows XP geändert habe und der Umgebung mit
Delphi-Quellcode:
SetEnvironmentVariable(PChar(Name), PChar(Value));
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
mitgeteilt habe, wird der neue Pfad nicht aktiv. Es muß aber gehen, da Windows selber den Pfad zu Laufzeit aktualisieren kann.
Hat jemand eine Idee?
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 21. Jun 2003, 14:35
Du mußt dein Programm neu starten. Da ein Prozess die Umgebungsvariablen für sich nur beim Start einliest. ist übrigens bei der Windows Konsole nicht anders. Wenn ich da die PATH-Variable öndere, muß ich die aktuelle Konsole erst schließen und neu öffnen bevor es wirksam wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#3
  Alt 21. Jun 2003, 14:41
Hallo Luckie,
auch wenn ich die Anwendung schließe, bzw. eine neue Eingabeaufforderung aufmache. dann sehe ich die neue Path-Variable. Aber der komplette Path ist nicht mehr verfügbar. Wenn ich zum Beispeil "net" eingebe bekomme ich "Der Befehl "net" ist entweder falsch geschrieben oder konnte nicht gefunden werden."
Eine Idee woran das liegen könnte.
Achso, gehe ich unter Windows Systemsteuerung --> Umgebungsvariablen und aktualisiere ist alles Ok, sowie nach einem Neustart.
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 21. Jun 2003, 14:42
Moin Duffy,

Zitat von Duffy:
Es muß aber gehen, da Windows selber den Pfad zu Laufzeit aktualisieren kann.
Ein Programm, dass die Message WM_SETTINGCHANGE nicht auswertet wird davon nur nichts mitbekommen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 21. Jun 2003, 14:45
Moin Duffy,

Zitat von Duffy:
dann sehe ich die neue Path-Variable. Aber der komplette Path ist nicht mehr verfügbar.
wenn Du die alte Path Variable überschreibst und nicht ergänzt ist das logisch. Wenn Du sie ergänzt hast allerdings nicht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 21. Jun 2003, 14:45
Ausgerechnet das Programm "net". Hast du denn ein NT-basierendes System? Bei mir liegt das nämlich von Hause aus im Suchpfad (Windows2000).
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#7
  Alt 21. Jun 2003, 14:46
Hallo Christian Seehase,
das sollte mir eigentlich so ziemlich egal sein. Aber die Eingabeaufforderung (cmd) bekommt dies nach einem erneuten Aufruf auf jeden Fall mit. Dies funktioniert aber nach meinem aktualisieren nicht.
Eine Idee was es sein könnte?
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 21. Jun 2003, 14:51
Moin Duffy,

wenn Du die Umgebungsvariable mit SetEnvironmentVariable setzt kann das nicht funktionieren, da hiermit nicht der Wert in der Registry unter Environment geändert wird, sondern der Eintrag in dem Environment dass der Prozess beim starten geerbt hat.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#9
  Alt 21. Jun 2003, 14:55
Hallo Christian Seehase,
auch den setze ich!
Delphi-Quellcode:
function TMainForm.SetGlobalEnvironment(Name, Value: string; System: Boolean): Boolean;
const
  UserRegKey = '\Environment';
  SystemRegKey = '\SYSTEM\CurrentControlSet\Control\Session Manager\Environment';
var
  Registry: TRegistry;
begin
  Registry := TRegistry.Create;
  if System then
  begin
    with Registry do
    begin
      RootKey := HKEY_LOCAL_MACHINE;
      OpenKey(SystemRegKey, False);
    end;
  end
  else
  begin
    with Registry do
    begin
      RootKey := HKEY_CURRENT_USER;
      OpenKey(UserRegKey, False);
    end;
  end;
  try
    Registry.WriteString('Path', Value);
    SetEnvironmentVariable(PChar(Name), PChar(Value));
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
    Result := True;
  finally
    Registry.Free;
  end;
end;
Noch eine Idee?
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 21. Jun 2003, 15:33
Moin Duffy,

ja, ich hab' 'ne Idee:

Du musst mit WriteExpandString schreiben, nicht mit WriteString, da der Wert Path vom Typ REG_EXPAND_SZ ist.
Wenn der Typ nicht stimmt (beim Schreiben mit WriteString wird daraus REG_SZ), kann Windows den Wert nicht auslesen, und erhält einen Leerstring zurück.

[EDIT]
Man muss grundsätzlich darauf achten, dass der Typ stimmt, nicht nur hier. Ansonsten kann das zu interessanten Effekten führen
[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz