Não é possível excluir a chave de registro em HKLM \ Microsoft \ Windows \ CurrentVersion \ Run via linha de comando

2

Estou tentando excluir algumas chaves de registro (itens de inicialização) por meio da linha de comando e, embora possa excluir de HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Executar muito bem, não consigo excluir nada de HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Executar.

Eu até criei algumas chaves temporárias lá através do regedit.exe, mas mesmo essas estão desabilitadas através da linha de comando. Então eu procurei por tópicos similares aqui e obviamente pesquisei no Google. Geralmente isso acontece porque:

  1. O prompt de comando não é executado como administrador. Esse não é o caso aqui, pois definitivamente tenho direitos de administrador na janela do cmd lançada.
  2. As permissões do registro estão bloqueando a exclusão. Mais uma vez, este não é o caso aqui. Alterei manualmente a permissão por meio do regedit.exe e agora sou o proprietário de HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Executar com controle total para minha conta.

A mensagem de erro específica dada pela linha de comando é:

ERROR: The system was unable to find the specified registry key or value.

No entanto, a chave definitivamente existe no local onde eu estou tentando excluí-lo e até mesmo o regedit mostra lá. Eu também posso excluí-lo com o regedit sem nenhum problema.

Alguém tem alguma pista sobre o que verificar?

OK, então enquanto escrevia este post eu tropecei em algo realmente bizarro. Parece que há duas versões de HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run.

Eu não tenho idéia como isso é possível, mas quando eu copio o nome da chave no regedit eles são idênticos e ainda exibem itens diferentes. O primeiro é OK e parece que o reg.exe está tentando encontrar e excluir a chave neste local e é por isso que ele está errado. A segunda é a problemática em que existe a chave que preciso excluir por meio da linha de comando.

No entanto, quando eu adiciono uma chave idêntica a HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run, ele é gravado no local "correto" e também posso excluí-lo via linha de comando.

OK, acho que sei qual é o problema agora. A localização "correta" é exibida quando executo uma versão nativa de 64 bits do regedit, e a problemática é exibida apenas quando executo uma versão de 32 bits do regedit.

SOLUÇÃO:

Use %windir%\SysWOW64\reg.exe para manipular entradas de registro de 32 bits e %windir%\System32\reg.exe para manipular entradas de registro de 64 bits. Eu vou ter uma conversa séria com os autores do programa sobre o motivo pelo qual eles colocam sua chave de inicialização no reqistry de 32 bits em um sistema de 64 bits.

    
por TMRW 29.07.2013 / 18:42

1 resposta

4

SOLUTION: Use %windir%\SysWOW64\reg.exe para manipular entradas de registro de 32 bits e %windir%\System32\reg.exe para manipular entradas de registro de 64 bits.

Eu vou ter uma conversa séria com os autores do programa, sobre por que eles colocam sua chave de inicialização no reqistry de 32 bits em um sistema de 64 bits.

    
por 29.07.2013 / 18:42