Como o diálogo Executar sabe onde estão os aplicativos?

69

Como usuário experiente, uso freqüentemente a caixa de diálogo Executar.

Eu posso entender porque os seguintes comandos funcionam, como eles estão na variável de ambiente PATH .

mspaint
diskmgmt.msc
explorer

Esses comandos também funcionam no CMD.

Os comandos abaixo funcionam na execução, mas não estão no PATH e não funcionam no CMD.

firefox
winword
iexplore

Como o Run sabe onde esses arquivos estão?

    
por mt025 05.08.2016 / 18:48

3 respostas

89

Quando você executa um comando na caixa de diálogo Executar, o sistema examina a chave de registro App Paths aqui:

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

e

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

EXEMPLO

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

(default) value data tem o caminho completo para o executável.

Se não for encontrado, ele olha para cada pasta incluída no PATH.

Considerando que o Prompt de Comando não faz referência a essas chaves do Registro. Só pesquisa o caminho.

    
por 05.08.2016 / 18:51
4

A resposta do w32sh aponta corretamente que as chaves extras pesquisadas pelo diálogo Executar estão aqui:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Caminhos do aplicativo \
  • Caminho HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App \

documentação oficial desses caminhos .

Um fato importante sobre essas chaves é que o nome da chave (por exemplo, "filezilla.exe") não precisa corresponder ao caminho completo de nenhuma maneira. No Windows 7, o valor pode até ser uma linha de comando simples, semelhante ao que pode ser usado como o "destino" de um atalho.

Por exemplo, eu costumava ter isso no meu registro:

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

Não consigo fazer isso funcionar no Windows 10, mas você ainda pode apontar para qualquer arquivo, incluindo um arquivo em lotes, por exemplo,

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

Isso permite que você digite "jedit" ou "jedit C: \ foo \ bar \ algo.txt" para executar a JVM com as opções apropriadas e iniciar / reutilizar jEdit .

Tanto quanto eu posso ver, o nome da chave deve terminar em ".exe", então para criar um alias de "abc", você cria uma chave "abc.exe", mesmo que não esteja apontando para um ". exe "file.

    
por 08.08.2016 / 11:02
-1

Existe uma variável de ambiente chamada PATH ou% PATH% na linha de comando. Ele contém uma série de locais para pesquisar.

    
por 06.01.2017 / 01:45