Woher weiß das Dialogfeld "Ausführen", wo sich die Anwendungen befinden?

3402
mt025

Als Power User benutze ich häufig das Dialogfeld "Ausführen".

Ich kann verstehen, warum die folgenden Befehle funktionieren, da sie in der PATHUmgebungsvariablen enthalten sind.

mspaint diskmgmt.msc explorer 

Diese Befehle funktionieren auch in CMD.

Die folgenden Befehle funktionieren in der Ausführung, aber sie sind nicht in der PATHund funktionieren nicht in CMD.

firefox winword iexplore 

Woher weiß Run, wo sich diese Dateien befinden?

69

3 Antworten auf die Frage

89
Win32Guy

Wenn Sie einen Befehl im Dialogfeld "Ausführen" ausführen, prüft das System den App PathsRegistrierungsschlüssel hier:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths 

und

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths 

BEISPIEL

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\filezilla.exe 

(default) Wertedaten haben den vollständigen Pfad zur ausführbaren Datei.

Wenn es nicht gefunden wird, wird nach jedem Ordner im PATH gesucht.

Die Eingabeaufforderung verweist jedoch nicht auf diese Registrierungsschlüssel. Es durchsucht nur den PFAD.

Ah, das erklärt wahrscheinlich, warum es nicht möglich ist, mehrere Programme mit demselben Namen mit Optionen zu öffnen. Schlechtes Design. curiousdannii vor 8 Jahren 5
Ja fast. Open with dialog liest jedoch aus `HKCR \ Applications` und` RegisteredApplications` Win32Guy vor 8 Jahren 2
Microsoft hat dazu ein Video zur Verfügung gestellt: https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-133-App-Paths magicandre1981 vor 8 Jahren 4
Sie können natürlich das eingebaute `start 'verwenden, das die App-Pfade durchsucht. Neil vor 8 Jahren 6
Dies ist ziemlich gut [hier dokumentiert] (http://msdn.microsoft.com/de-de/library/windows/desktop/ee872121%28v=vs.85%29.aspx). Ich habe auch erklärt, wie cmd seine Suche ausführt [hier] (http://superuser.com/a/494548/117590) - es ist ein bisschen ein Sonderfall, der sich von Win32-APIs unterscheidet. Bob vor 8 Jahren 1
@curiousdannii kannst du das näher erläutern? In Windows können mehrere Prozesse mit demselben Namen ausgeführt werden phuclv vor 8 Jahren 0
@ LưuVĩnhPhúc Sie können nicht mehrere Dateizuordnungen mit demselben Namen der ausführbaren Datei haben. Oder zumindest habe ich nicht herausgefunden, wie curiousdannii vor 8 Jahren 0
@curiousdannii: Mit der Benutzeroberfläche nicht möglich, aber Sie können dies tun, indem Sie die Registrierung bearbeiten. Win32Guy vor 8 Jahren 0
@ w32sh Das Ärgerliche ist, auch wenn Sie eine App mit der Dateiauswahl auswählen, die Ihnen die Benutzeroberfläche bietet. Sie verwendet eine vorhandene App, wenn sie den gleichen Dateinamen hat. curiousdannii vor 8 Jahren 0
Richtig. Sie können dies jedoch mit regedit.exe tun. Wenn Sie eine bestimmte Anforderung haben, veröffentlichen Sie bitte eine neue Frage. Win32Guy vor 8 Jahren 0
@curiousdannii warum nicht? Zum Beispiel ist MS Word mit .doc, .docx, .docm, .dot, .dotx, .dotm ... verknüpft. phuclv vor 8 Jahren 0
@ LưuVĩnhPhúc Ich meine, Sie können .doc nicht mit zwei Programmen in zwei verschiedenen Verzeichnissen verknüpfen, wenn der Dateiname von word.exe ist (ohne Verwendung von regedit). curiousdannii vor 8 Jahren 0
@ w32sh Ich wollte das nicht entgleisen oder Unterstützung für meine Probleme erhalten - ich habe es ursprünglich nur kommentiert, weil ich dachte, dass Ihr Beitrag interessant war, und er mir etwas Neues beigebracht hat: dass Windows manchmal pfadlose Dateinamen verwendet. curiousdannii vor 8 Jahren 0
4
IMSoP

Die Antwort von w32sh weist zu Recht darauf hin, dass die zusätzlichen, vom Dialogfeld "Ausführen" gesuchten Schlüssel hier sind:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \

Für diese Wege gibt es offizielle Unterlagen .

Eine wichtige Tatsache bei diesen Schlüsseln ist, dass der Name des Schlüssels (z. B. "filezilla.exe") in keiner Weise mit dem vollständigen Pfad übereinstimmen muss. Unter Windows 7 kann der Wert sogar eine einfache Befehlszeile sein, ähnlich dem, was als "Ziel" einer Verknüpfung verwendet werden kann.

Zum Beispiel hatte ich das in meiner Registry:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe] @="\"C:\\WINDOWS\\system32\\javaw.exe\" -Xms24M -Xmx512M -jar \"C:\\Program Files\\jEdit\\jedit.jar\" -reuseview" 

Ich scheine dies unter Windows 10 nicht zu schaffen, aber Sie können trotzdem auf jede Datei zeigen, einschließlich einer Batch-Datei, z

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe] @="C:\\Program Files\\jEdit\\run-jedit.bat" 

Auf diese Weise können Sie "jedit" oder "jedit C: \ foo \ bar \ something.txt" eingeben, um die JVM mit den entsprechenden Optionen auszuführen und jEdit zu starten / erneut zu verwenden .

Soweit ich sehen kann, muss der Schlüsselname auf ".exe" enden. Um einen Alias ​​von "abc" zu erstellen, erstellen Sie einen Schlüssel "abc.exe", auch wenn er nicht auf eine ".exe" -Datei verweist .

Es funktioniert hier nicht, wenn ich nach dem Namen der ausführbaren Datei zusätzliche Schalter verwende. Win32Guy vor 8 Jahren 0
@ w32sh Hm, ich denke es hat sich in Win 10 geändert :( IMSoP vor 8 Jahren 0
-1
Garhoogin

In der Befehlszeile gibt es eine Umgebungsvariable namens PATH oder% PATH%. Es enthält eine Reihe von Orten zum Durchsuchen.