Parâmetros de opções de passagem para comandos do menu de contexto no Windows Registry Editor

1

Como podemos passar opções para programas sendo chamados através de edições para o registro do windows usando regedit.exe? Esta é uma questão de sintaxe, tanto quanto eu posso dizer.

Por exemplo ... recentemente adicionei um novo programa à minha pasta windows / system32 chamada sDelete.exe. É um programa seguro de exclusão disponível no site da Microsoft.

link

A partir do site: O SDelete implementa o padrão DOD 5220.22-M de compensação e sanitização do Departamento de Defesa, para lhe dar a confiança de que, uma vez excluídos com o SDelete, os dados do seu arquivo se foram para sempre. Observe que o SDelete exclui com segurança os dados do arquivo, mas não os nomes de arquivos localizados no espaço livre em disco.

Então, eu queria adicionar uma entrada de menu de contexto no Windows 7 quando clico com o botão direito do mouse em um arquivo. Até agora, posso excluir um programa do menu de contexto, mas apenas o chamo sem passar parâmetros de opções.

  1. windowKey + R: abre a janela de execução; Digite regedit.exe para abrir o editor de registro
  2. desça para HKEY_CLASSES_ROOT * \ shell \
  3. Crie uma nova chave chamada "sDelete: 3 Passes"
  4. Clique com o botão direito na nova chave e crie outra nova chave, nomeie-a como "comando".
  5. Clique duas vezes em (Padrão) e insira o seguinte comando "c: \\ windows \\ system32 \\ sdelete.exe" "% 1"

(Atualização: solução abaixo)

Neste ponto, posso clicar com o botão direito do mouse em um arquivo e protegê-lo, mas o padrão é apenas 1 passagem. Eu sou muito injustificadamente paranóico para aceitar esse comportamento. Agora eu tentei algumas coisas diferentes para passar a opção de parâmetro que especifica o número de passes que eu quero sDelete para executar. Diga "-p 3", por exemplo, especificaria três passagens.

Não consigo descobrir como fazer isso funcionar. Eu pensei que tinha, mas depois percebi que não estava certo.

Como podemos passar parâmetros de opção para uma chamada para um programa através de um menu de contexto desta maneira?

ATUALIZAÇÃO: O PROBLEMA ESTÁ COM A SINTAXE DOS PARÂMETROS.

Eu percebi isso. Eu estava fazendo o que você sugeriu, bem como uma variedade de variações, mas nada funcionaria. "-p 3" não funcionaria, eu receberia um erro ou uma janela se abriria solicitando que eu especificasse um programa para abri-lo.

  • Clique duas vezes em (Padrão) e digite o seguinte comando

USE "c: \\ windows \\ system32 \\ sdelete.exe" "-p" "3" "% 1"

não "c: \\ windows \ system32 \\ sdelete.exe" "-p 3" "% 1"

e não "c: \\ windows \\ system32 \\ sdelete.exe -p 3" "% 1"

e não "c: \\ windows \\ system32 \\ sdelete.exe -p 3% 1"

e não c: \\ windows \\ system32 \\ sdelete.exe -p 3% 1

Observe que incluir espaço em branco causa problemas. Isso faz sentido se realmente. O Windows está ignorando o espaço em branco, mas quando o espaço é incluído dentro de uma cadeia de caracteres, o programa está apenas combinando a cadeia com uma lista predeterminada limitada. Correspondências exatas são esperadas. "-p 3" não é igual a "-p" "3". Ao corresponder um parâmetro a string "-p 3" não existe uma opção chamada "p 3". Em vez disso, devemos dar a opção "-p" para dizer ao programa para "ouvir" um valor para passar para o programa. Se não começar com um símbolo - então o programa o interpreta como um nome de arquivo.

Portanto, separar todos os argumentos que você normalmente seria analisado da string que você digita na entrada cmd é a maneira de inicializá-los corretamente.

    
por Dave 29.04.2013 / 02:20

1 resposta

0

Você apenas inclui os parâmetros na linha de comando inserida na chave do Registro. o A sintaxe depende inteiramente do comando que você executa. Se "-p 3" é o que o SDelete quer, Deveria trabalhar. Consulte a documentação do SDelete, se não o fizer.

    
por 29.04.2013 / 05:24