Por que esse comando de registro do Windows não está funcionando?

0

Então, estou tentando fazer uma opção de menu de contexto de clique com o botão direito do mouse que copiará o caminho de um arquivo no Windows 7. Este é o meu material de registro:

[HKEY_CLASSES_ROOT\*\shell\Copy path]

[HKEY_CLASSES_ROOT\*\shell\Copy path\command]
@="C:\Windows\System32\Tweaks\ContextCopy.exe path %1"

A opção aparece corretamente no menu de contexto. ContextCopy.exe pega o caminho absoluto do arquivo como uma string e o copia internamente para a área de transferência, dependendo de qual seja o primeiro argumento. Ele funciona bem como eu testei no prompt de comando com um nome de arquivo real para o último argumento. Mas sempre que faço isso no menu de contexto, aparece um erro que diz "Este arquivo não tem um programa associado a ele para executar esta ação". E o título deste pop-up é o caminho do arquivo que cliquei com o botão direito e abri o menu. O caminho também não é copiado para a área de transferência.

Acho que% 1 deve fornecer o caminho absoluto do arquivo como uma string, certo?

    
por Brandon Johnson 31.05.2016 / 18:12

3 respostas

2

Você pode tentar incluir aspas em torno do% 1 para garantir que os caminhos com espaços sejam tratados como uma única string.

Então, via Regedit, altere o comando para:

C:\Windows\System32\Tweaks\ContextCopy.exe path "%1"

Que exportará como:

[HKEY_CLASSES_ROOT\*\shell\Copy path]

[HKEY_CLASSES_ROOT\*\shell\Copy path\command]
@="C:\Windows\System32\Tweaks\ContextCopy.exe path \"%1\""

As barras invertidas escapam das citações aninhadas.

Além disso, como você está usando o Windows 7, não precisa do seu pequeno utilitário ContextCopy.exe, pois pode usar o comando clip embutido do Windows:

De clip /? :

CLIP

Description: Redirects output of command line tools to the Windows clipboard. This text output can then be pasted into other programs.

Parameter List:

/?                  Displays this help message.

Examples:

DIR | CLIP          Places a copy of the current directory
                    listing into the Windows clipboard.

CLIP < README.TXT   Places a copy of the text from readme.txt
                    on to the Windows clipboard.

Você pode substituir o Comando por algo como cmd.exe /c echo "%1"|clip e obter o mesmo efeito, sem o utilitário de terceiros.

    
por 31.05.2016 / 18:31
0

Eu entendi. Eu precisava escapar das barras invertidas no caminho .exe e também as aspas em torno do% 1:

[HKEY_CLASSES_ROOT\*\shell\Copy path]

[HKEY_CLASSES_ROOT\*\shell\Copy path\command]
@="C:\Windows\System32\Tweaks\ContextCopy.exe path \"%1\""
    
por 31.05.2016 / 18:34
-1

Você precisa (pelo menos) adicionar aspas em torno do% 1 - "%1" - caso contrário, o nome do arquivo e o nome chegarão como parâmetros separados onde quer que estejam em branco.

    
por 31.05.2016 / 18:19