Dlaczego monit Win + R może otworzyć Python, gdy nie znajduje się na mojej ścieżce?

4

Gdy korzystam z wiersza polecenia w systemie Windows XP Professional (Win + R) i wpisuję python.exelub python, działa i wita mnie pytaniem python.

Jednak gdy uruchamiam cmdokno, a następnie wpisuję python.exelub python, nie można go znaleźć.

Tego właśnie oczekuję, ponieważ katalogu Python (dla mnie I:\Python31\) nie ma w moim PATH.

Jak to się dzieje, że jeśli wpiszesz python.exeznak zachęty Win + R, to zadziała?

Edycja: oto częściowe wyjście SET, usunąłem najbardziej niepotrzebne wpisy, nie jestem pewien, dlaczego jest to użyteczne, oprócz PATHzmiennej, o której mówiłem, że nie zawiera katalogu Pythona. Jeśli potrzebujesz konkretnej zmiennej innej niż te, zapytaj.

CLIENTNAME=Console
CommonProgramFiles=I:\Program Files\Common Files
ComSpec=I:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
OS=Windows_NT
Path=I:\WINDOWS\system32;I:\WINDOWS;I:\WINDOWS\system32\WBEM;I:\WINDOWS\system32\WindowsPowerShell\v1.0;I:\Qt\2010.05\mingw\bin;I:\Program Files\CMake 2.8\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1
ProgramFiles=I:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=I:
SystemRoot=I:\WINDOWS
VBOX_INSTALL_PATH=I:\Program Files\Oracle\VirtualBox\
windir=I:\WINDOWS
houbysoft
źródło
Czy możesz edytować swoje pytanie, aby uwzględnić wynik SET? Możesz go edytować, aby twoje imię się nie pojawiało.
paradroid
Wysłałem jego części, nie jestem pewien, czy cokolwiek innego Pathjest istotne, czy chcesz konkretną zmienną?
houbysoft
Jaki jest twój katalog roboczy?
digitxp

Odpowiedzi:

12

wiersz Uruchom wyszukuje ścieżkę rejestru w poszukiwaniu programów do uruchomienia, a także ścieżkę%. Spójrz HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths- prawdopodobnie znajdziesz węzeł o nazwie „Python.exe” z domyślnym wpisem wskazującym na plik wykonywalny Python. Instalatorzy powinni tutaj dodać wpisy rejestru dla wszystkich głównych plików wykonywalnych, ale monit Uruchom jest niedocenianą funkcją, więc wielu programistów zapomina o dodaniu tego prostego kroku do swojego instalatora.

jcrawfordor
źródło
Nigdy sam o tym nie wiedziałem, dzięki za odpowiedź!
houbysoft
2
Technicznie to właśnie ShellExecuteEx()robi wyszukiwanie.
grawity
1
W rzeczywistości w rejestrze jest kilka miejsc, w których znajdują się ścieżki HKCR\Applications. Pewnego dnia powinienem je wszystkie wyczyścić.
Synetech