Windows 10 Gelöschte Systemumgebungsvariablen kehren immer wieder zurück

385
David C.

Ich benutze GNU Emacs seit vielen Jahren unter Windows. Damit das funktioniert, musste ich immer mehrere Umgebungsvariablen definieren. Ich hatte diese ganze Zeit als Systemvariablen definiert:

EMACS_DIR, EMACSDATA, EMACSDOC, EMACSLOADPATH, EMACSLOCKDIRUnd EMACSPATH.

Ich habe kürzlich meine Emacs von der "NTEmacs" - Portierung von 24.3 auf die offizielle GNU-Portierung von 26.1 aufgerüstet, und ich habe festgestellt, dass die Werte, die ich dafür verwendete, falsch waren. Darüber hinaus kann die aktuelle Version alle außer der EMACSPATH-Variablen automatisch erkennen.

Also ging ich in das Kontrollfeld für Umgebungsvariablen, änderte EMACSPATH, um auf den Speicherort der neuen Installation zu verweisen, und löschte den Rest. Emacs funktioniert jetzt großartig.

Ich habe aber herausgefunden, dass nach einem Logout / Login alle gelöschten Variablen zurück sind und die alten Werte enthalten. Genauer gesagt, sie befinden sich nicht in der Systemsteuerung, aber wenn ich eine Eingabeaufforderung öffne und tippe set, sind sie da und verhindern, dass Emacs funktionieren. (Andere Umgebungsvariablen, die ich gelöscht habe, sind auch wieder verfügbar, aber sie stören keine meiner Apps, daher kümmert es mich nicht so sehr).

Wenn ich Systemumgebungsvariablen mit dem Steuerungsfeld ändere, füge oder entferne sie zurück, wird die Umgebung entsprechend angepasst und Emacs funktioniert wieder, bis ich mich das nächste Mal abmelden oder neu starten kann.

Natürlich werden diese Umgebungsvariablen irgendwo zwischengespeichert, aber ich habe keine Ahnung, wo ich suchen muss, um sie vollständig zu löschen.

Ich habe die Registry mit regedit durchsucht und konnte keine Spur dieser alten Variablen finden. Gibt es einen Ort, wo ich sonst suchen sollte? Dies ist eindeutig ein Windows-Fehler, aber ich möchte mich nicht damit abfinden müssen, solange Microsoft es repariert.

Ich kann natürlich die Werte abrufen, die Emacs mit diesen Werten berechnet und die Systemumgebungsvariablen neu erstellt. Ich würde es jedoch vorziehen, dies zu vermeiden, es sei denn, es gibt keine andere Option.

2
In meinem Win10v1803-Setup mit installiertem Windows-Subsystem für Linux Ubuntu 1804, ohne dass Emacs für Windows installiert ist, sehe ich diese Systemvariablen nicht. Ich vermute, es gab eine geplante Aufgabe oder ein anderes Skript, das beim Anmelden ausgeführt wird (siehe Taskplaner, und siehe Task-Manager-> Start und msconfig, um zu sehen, was beim Anmelden und beim Start ausgeführt wird). Es gibt möglicherweise andere Möglichkeiten, die Variablen automatisch festzulegen. Siehe https://superuser.com/questions/15596/automatically-run-a-script-wenn-i-log-on-nach-winkows. Christopher Hostage vor 6 Jahren 0
Was hat die Frage wirklich mit Emacs zu tun? Drew vor 6 Jahren 0
Es gibt zwei parallele Sätze von Umgebungsvariablen: System und Benutzer. Hast du beides geprüft? harrymc vor 6 Jahren 0
Es ist kein Emacs-Problem. Emacs ist der Grund, warum ich das Problem entdeckt habe. Es tritt bei allen Umgebungsvariablen auf, die Sie zu einem früheren Zeitpunkt festgelegt und später gelöscht haben. Ja, ich habe beides geprüft - ich habe sie nur im System erstellt und nur aus dem System gelöscht. David C. vor 6 Jahren 0
Sie müssen von einem installierten Programm neu erstellt werden. Umgebungsvariablen werden nicht von selbst wieder angezeigt. harrymc vor 6 Jahren 0

0 Antworten auf die Frage