Warum kann die Windows-Registrierung% temp% nicht interpretieren oder erweitern?

2

Ich habe einen Registrierungseintrag im Ausführungsschlüssel wie folgt:

Typ = REG_SZ, Wert = Test, Daten =% temp% \ test.exe

Wenn ich meinen Rechner neu starte, wird test.exe nicht ausgeführt, aber wenn ich den vollständigen Pfad des temporären Ordners (etwa "C: \ Dokumente und Einstellungen \ XPMUser \ Lokale Einstellungen \ Temp") befolge, wird er beim Neustart ausgeführt.

Was ist damit los?

Ich habe auch REG_EXPAND_SZ ausprobiert, aber es hat immer noch nicht funktioniert.

Brian T. Hannan
quelle
1
Verwenden REG_EXPAND_SZ sollte für die Run-Taste funktionieren. Versuchen Sie, eine Eingabeaufforderung zu öffnen und den Befehl auszuführen set temp. Zeigt es die Variable erweitert? Versuchen Sie, eine Eingabeaufforderung mit erhöhten Rechten zu öffnen, und wiederholen Sie den Vorgang. Erweitert es jetzt die Variable?
Synetech
Danke Jungs, es stellte sich heraus, dass es ein Fehler von meiner Seite war. Ich habe mein VMWare-Image zurückgesetzt und jetzt funktioniert es einwandfrei.
Brian T Hannan
Wenn Sie das Problem selbst lösen: Geben Sie entweder Ihre eigene Antwort ein, in der die Lösung beschrieben wird, oder schließen Sie die Frage als "nicht mehr relevant".
Grawity

Antworten:

1

Was ist mit den Daten in Anführungszeichen?

Mark Sowul
quelle
Guter Punkt. Der Explorer ShellExecutestartet die " Run" Einträge, erlaubt Befehlsargumente usw .; es ist möglich, dass es C:\Documentsin diesem Fall versuchen würde zu starten .
Grawity
Unwahrscheinlich. Brian sagte, dass er die tempVariable verwendet, die das temporäre Systemverzeichnis ist, in dem sich normalerweise befindet C:\Windows\Temp(das weder Leerzeichen noch lange Namen hat). Das lokale temporäre Verzeichnis der Benutzer wird in der tmpVariablen gespeichert . Daher sollten Leerzeichen kein Problem darstellen, es sei denn, er hat die Systemvariable temp-directory so geändert, dass sie auf ein Verzeichnis in seinem eigenen Ordner verweist.
Synetech
@Synetech: In allen Systemen Ich habe beide gesehen %TEMP%und %TMP%auf den Punkt des Benutzers temporäres Verzeichnis.
Grawity
1
@Synetech: Ich habe Windows 2008 Server, Windows XP Pro und Windows 2000 Pro: Sowohl TEMPund TMPdefiniert sind pro Benutzer ( HKCU\Environmentzeigt auf Benutzerprofil - Unterverzeichnis) und systemweit ( HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentzeigt auf %SystemRoot%\Temp).
Grawity
1
Das klingt mehr oder weniger richtig. Die Benutzerversion überschreibt die Systemversion. Ich nehme an, dass Programme wie Installer, die außerhalb des Anwenderkreises arbeiten müssen, die Variablen auf Systemebene erhalten. (Es scheint mehr Arbeit zu sein, als nur verschiedene Variablen zu verwenden, aber das ist noch mehr Abwärtskompatibilität für Sie.)
Synetech
1

Die Registrierung ist nur eine Datenbank mit Informationen - es ist keine Anwendung, die ihren eigenen Inhalt interpretieren kann.

Ich sehe keinen Grund, warum das nicht möglich sein sollte. Vielleicht könnten Sie eine kleine Batch-Datei erstellen, die% TEMP% beim Booten in eine Datei umwandelt, um zu sehen, was, wenn überhaupt, dort enthalten ist?

Majenko
quelle
1
Tatsächlich wird die Umgebung in Windows vom Sitzungsverwaltungssubsystem initialisiert, das zu Beginn der Startsequenz ausgeführt wird. Dies bedeutet, dass alle Variablen zum Zeitpunkt der Ausführung durch den Explorer und des Startens der Elemente im Ausführungsschlüssel (der definitiv weiß, wie ExpandEnvironmentVariables () für die Werte ausgeführt wird) für die Erweiterung verfügbar sein sollten.
Synetech
Das ist gut zu wissen
Majenko
0

Schließen Sie Ihre Variable% temp% in Anführungszeichen ein. Der Platz auf dem Weg wirft möglicherweise etwas ab.

data = "% temp%" \ test.exe

Jay Teal
quelle
Leerzeichen sollten im Kontext eines Run-Schlüsseleintrags keine Rolle spielen, es sei denn, es gibt Befehlszeilenargumente, die in der Frage nicht enthalten sind. Vertrau mir, ich habe experimentiert.
Synetech
Stimmt, es sei denn, es gibt ein "C: \ Documents" ... (Ich glaube, Explorer warnt, wenn ein "C: \ Program" zusammen mit "C: \ Program Files" existiert.)
Grawity
0

%temp%Stellen Sie sicher, dass auch auf den Ordner zeigt, von dem Sie glauben, dass er es tut.

Synetech
quelle
1
Wo finden Sie diese mysteriösen Computer, deren Benutzerkonten% temp% auf C: \ Windows \ Temp erweitern? 1998?
Mark Sowul
Benutzerkonten erweitern es nicht in den temporären Systemordner, sondern in den lokalen Ordner. Benutzer haben ihre eigenen Umgebungsvariablen, die die systemweite überschreiben.
Synetech