2013-06-14 09:06:20 +0000 2013-06-14 09:06:20 +0000
21
21
Advertisement

Como modifico os dados de um valor chave de registo existente de cmd?

Advertisement

Como modifico um valor chave de registo existente de cmd?

Existem muitas opções e interruptores, campainhas e apitos, para o comando Reg. Existem opções para consultar, adicionar e apagar chaves, subchaves e nomes de valores. Mas como se modifica os dados de um nome de valor existente? Você remove completamente o nome do valor, e depois adiciona-o novamente e reescreve o valor/dados modificados? Isso parece muito complicado…

Não estou interessado em nenhuma automatização de script/batch, pelo menos não agora, só quero uma simples edição de registo através do comando Reg cmd. Sem a necessidade de destruir uma chave apenas para a adicionar um segundo mais tarde com alguns dados adicionais. O mesmo tipo de operação que pode fazer em Regedit.

Aqui está um exemplo para estimular o processo de pensamento.

Key: HKEY_CURRENT_USER\Software\Citrix\Receiver
Value type: reg_sz
Value name: UpgradeDone
Value data: true

Agora este está óptimo, mas e se eu tiver de alterar os dados de valor de “verdadeiro” para “falso”. Para que eu tenha isto:

Key: HKEY_CURRENT_USER\Software\Citrix\Receiver
Value type: reg_sz
Value name: UpgradeDone
Value data: false

Quais são as opções e sintaxe para fazer isso de cmd?….

Update:

Acabei de perceber agora que o exemplo acima pode ter sido demasiado fácil. …

No exemplo acima posso simplesmente fazer o seguinte:

reg delete HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone

reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false

Posso dar-me ao luxo de apagar completamente o valor, e depois adicioná-lo novamente, porque os dados contidos nele são muito pequenos. É apenas uma string como “verdadeiro” ou “falso”. Isso não é muito difícil de recriar.

Aqui está um exemplo mais duro** com mais conteúdo de dados:

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Value name: Path
Value type: Reg_Sz
Data: C:\Program Files (x86)\ImageMagick-6.8.5-Q16;C:\PROGRA~2\GTK2-R~1\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files (x86)\WinHasher";C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\;C:\Program Files (x86)\GTK2-Runtime\bin;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;C:\Program Files (x86)\Common Files\Teleca Shared;C:\Program Files (x86)\Notepad++

Eu quero remover apenas partes do conteúdo dos dados. Especificamente, eu só quero remover o último caminho de pesquisa, o C:\Program Files (x86)\Notepad++.

Como é que se lida com este??…

Não espera que eu volte a escrever tudo isto?…..

Advertisement
Advertisement

Respostas (2)

38
38
38
2013-06-14 09:27:30 +0000

Use REG ADD com o parâmetro “/f” para forçar a sobregravação.

REG ADD /? explica os parâmetros.

REG ADD KeyName [/v ValueName | /ve] [/t type] [/s Separator] [/d Data] [/f]

KeyName [\Machine\]FullKey

Machine Name of remote machine - omitting defaults to the current machine 
            Only HKLM and HKU are available on remote machines
FullKey ROOTKEY\SubKey ROOTKEY [HKLM | HKCU | HKCR | HKU | HKCC] SubKey 
            The full name of a registry key under the selected ROOTKEY
/v The value name, under the selected Key, to add
/ve adds an empty value name <no name> for the key
/t RegKey data types
            [ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN | REG_DWORD | 
              REG_BINARY | REG_DWORD_LITTLE_ENDIAN | REG_NONE | REG_EXPAND_SZ ]
            If omitted, REG_SZ is assumed
/s Specify one character that you use as the separator in your data 
            string for REG_MULTI_SZ. If omitted, use "```
reg add HKCU\Software\Citrix\Receiver /t REG_SZ /v UpgradeDone /d true /f
```" as the separator
/d The data to assign to the registry ValueName being added
/f Force overwriting the existing registry entry without prompt

Para inserir um novo valor ou alternar um valor de string de “false” para “true”, use um comando como este:

set append=XXXXXX
set key=HKCU\Software\myTest
set value=myValue
set oldVal=

for /F "skip=2 tokens=3" %%r in ('reg query %key% /v %value%') do set oldVal=%%r
echo previous=%oldVal%

set newVal=%oldVal%%append% 

reg add %key% /v %value% /d %newVal% /f

Exemplo que lê um valor existente e anexa alguma string antes de o escrever de volta:

&001

Note: Esta amostra assume que o valor antigo e o novo valor não têm espaços em branco. Caso contrário é necessário adicionar aspas e alterar o parâmetro “tokens”. Omitida verificação de erro extra para brevidade. No entanto, todos os códigos de manipulação de registo devem definitivamente fazer uma verificação de erros adequada.

2
2
2
2015-04-13 23:01:03 +0000

Pode também REG import foo.reg em que foo.reg é um ficheiro contendo a informação de registo habitual, uma vez que exportaria de regedit.exe.

No seu exemplo, isto seria algo como:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"Path"="C:\Program Files (x86)\ImageMagick-6.8.5-Q16;C:\PROGRA~2\GTK2-R~1\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files (x86)\WinHasher";C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\;C:\Program Files (x86)\GTK2-Runtime\bin;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;C:\Program Files (x86)\Common Files\Teleca Shared;C:\Program Files (x86)\Notepad++"

Mais informação disponível em este artigo da Microsoft Technet .

Advertisement

Questões relacionadas

3
19
10
28
6
Advertisement
Advertisement