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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.