Editar registro de linha de comando

0

Parece que tenho um problema com o comando reg que estou tentando adicionar pelo cmd. Alguma idéia de como eu posso corrigir esse erro de sintaxe, já que o comando dosent parece errado ...

reg add HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command /v command /t REG_MULTI_SZ /d xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"

Eu preciso editar a string command e adicionar os dados:

xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"
    
por Fate Averruncus 21.01.2015 / 17:09

2 respostas

2

Tem alguma ideia de como posso corrigir este erro de sintaxe?

Sua string (binária?) contém um caractere > (que é usado para redirecionar a saída de um comando para um arquivo).

Você tem:

REG_MULTI_SZ /d xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ 

Tente usar " :

REG_MULTI_SZ /d "xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ"

Ou escapando do > com ^> :

REG_MULTI_SZ /d xb'BV5!!!!!!!!!MKKSkEXCELFiles^>VijqBof(Y8'w!FId1gLQ 

Além disso, o comando reg add ... não parece correto.

Você não tem uma matriz de sequências com caracteres nulos que são terminados por dois caracteres nulos.

Aqui está a sintaxe correta.

REG ADD [ROOT]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]

onde:

/S Separator : Character to use as the separator in REG_MULTI_SZ values the default is "

Escape Character

^ Escape character.

Adding the escape character before a command symbol allows it to be treated as ordinary text.

When piping or redirecting any of these charcters you should prefix with the escape character: & \ < > ^ |

 e.g.  ^\  ^&  ^|  ^>  ^<  ^^
"

REG_MULTI_SZ Array of null-terminated strings that are terminated by two null characters.

Fonte REG.exe :

Consulte link para obter mais informações

Sintaxe: Escape Characters, Delimiters and Quotes

%bl0ck_qu0te%

Fonte Sintaxe: caracteres de escape, delimitadores e citações

Leitura adicional

por 21.01.2015 / 17:25
1

DavidPostil está certo em que você tem que colocar toda a string de dados entre aspas duplas, e então escapar e aspas duplas dentro da string para garantir que eles saibam que fazem parte da string.

Neste caso, toda a cadeia de dados que você deseja adicionar é:

xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"

Assim, você deseja agrupar toda a string entre aspas duplas, para que a linha de comando a reconheça como uma única string (e não vários argumentos).

O truque é descobrir quais citações (e outros caracteres) dentro dessas citações delimitadoras precisam ser escapadas e, em seguida, descobrir como escapar delas para esse contexto.

Demorou um pouco de tentativa e erro para descobrir, mas para este caso você só precisa se preocupar com as aspas duplas internas, e você as escapa precedendo-as com uma barra invertida ( \ ):

reg add "HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command" /v command /t REG_MULTI_SZ /d "xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p \"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE\" /e \"%1\""

Tendo dito tudo isso, e com base nos problemas que parecem continuar com o acerto, acho que Ramhound poderia ter mencionado a solução melhor / mais fácil em seu comentário.

Basta ir a uma máquina com o conjunto de configurações desejado e exportar essa chave para um arquivo .reg .

Em seguida, use reg import no seu arquivo de lote para importar esse arquivo .reg.

Se você não gosta de usar / distribuir dois arquivos, e / ou você não tem um lugar central, você pode colocá-lo na rede, então você pode sempre ter o arquivo em lote criando o arquivo .reg em tempo real. ecoando as linhas para um arquivo de texto temporário, importe-o e exclua o arquivo temporário assim que terminar.

    
por 21.01.2015 / 17:37