Làm thế nào để hộp thoại Run biết ứng dụng ở đâu?


72

Là người sử dụng năng lượng, tôi thường xuyên sử dụng hộp thoại Run.

Tôi có thể hiểu tại sao các lệnh sau hoạt động, vì chúng nằm trong PATHbiến môi trường.

mspaint
diskmgmt.msc
explorer

Các lệnh này cũng hoạt động trong CMD.

Các lệnh bên dưới hoạt động, nhưng chúng không hoạt động PATHvà chúng không hoạt động trong CMD.

firefox
winword
iexplore

Làm thế nào để Run biết những tập tin này ở đâu?

Câu trả lời:


90

Khi bạn thực thi một lệnh từ hộp thoại Run, hệ thống sẽ xem App Pathskhóa đăng ký tại đây:

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

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

THÍ DỤ

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

(default) dữ liệu giá trị có đường dẫn đầy đủ để thực thi.

Nếu không tìm thấy, nó sẽ xem xét từng thư mục có trong PATH.

Trong khi Command Prompt không tham chiếu các khóa registry này. Nó chỉ tìm kiếm PATH.


5
Ah, điều này có thể giải thích tại sao bạn không thể có nhiều chương trình có cùng tên hoạt động như mở với các tùy chọn. Thiết kế kém.
tò mò

2
Có gần như. Nhưng Mở bằng hộp thoại đọc từ HKCR\ApplicationsRegisteredApplications
w32sh

4
Microsoft đã cung cấp một video về điều này: channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-133-App-Paths
magicandre1981

6
Tất nhiên bạn có thể sử dụng startnội dung trong đó tìm kiếm đường dẫn ứng dụng.
Neil

1
Đây là tài liệu khá tốt ở đây . Tôi cũng đã giải thích cách cmd thực hiện tìm kiếm ở đây - đó là một trường hợp đặc biệt khác với API Win32.
Bob

4

Câu trả lời của w32sh chỉ ra một cách chính xác rằng các phím phụ được tìm kiếm trong hộp thoại Run nằm ở đây:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Đường dẫn ứng dụng \
  • HKEY_LOCAL_MACHINE \ PHẦN MỀM \ Microsoft \ Windows \ CurrentVersion \ Đường dẫn ứng dụng \

tài liệu chính thức cho những con đường này .

Một thực tế quan trọng về các khóa này là tên của khóa (ví dụ: "filezilla.exe") không phải khớp với đường dẫn đầy đủ theo bất kỳ cách nào. Trong Windows 7, giá trị thậm chí có thể là một dòng lệnh đơn giản, tương tự như những gì có thể được sử dụng làm "mục tiêu" của một phím tắt.

Ví dụ, tôi đã từng có cái này trong sổ đăng ký của mình:

[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"

Tôi dường như không thể làm điều này hoạt động trong Windows 10, nhưng bạn vẫn có thể trỏ vào bất kỳ tệp nào, kể cả tệp bó, ví dụ:

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

Điều đó cho phép bạn nhập "jedit" hoặc "jedit C: \ foo \ bar \ Something.txt" để chạy JVM với các tùy chọn phù hợp và khởi chạy / tái sử dụng jEdit .

Theo như tôi có thể thấy, tên khóa phải kết thúc bằng ".exe", vì vậy để tạo bí danh "abc", bạn tạo một khóa "abc.exe", ngay cả khi nó không trỏ đến tệp ".exe" .


Nó không hoạt động ở đây nếu tôi sử dụng các chuyển đổi bổ sung sau tên tệp thực thi.
w32sh

@ w32sh Hừm, tôi nghĩ nó đã thay đổi trong Win 10 :(
IMSoP

-1

Có một biến môi trường được gọi là PATH, hoặc% PATH% trong dòng lệnh. Nó chứa một loạt các địa điểm để tìm kiếm thông qua.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.