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

Come si modificano i dati di un nome di una chiave di registro esistente da cmd?

Come si modifica un valore di una chiave di registro esistente da cmd?

Ci sono molte opzioni e interruttori, campanelli e fischietti, per il comando Reg. Ci sono opzioni per interrogare, aggiungere ed eliminare chiavi, sottochiavi e nomi di valori. Ma come si modificano i dati di un nome di valore esistente? Rimuovete completamente il nome del valore e poi lo aggiungete di nuovo e digitate di nuovo il valore/dati modificati? Sembra molto complicato…

Non sono interessato a nessuna automazione di script/batch, almeno non ora, voglio solo una semplice e semplice modifica del registro attraverso il comando cmd Reg. Senza la necessità di distruggere una chiave solo per aggiungerla un secondo dopo con alcuni dati aggiuntivi. Lo stesso tipo di operazione che si può fare in Regedit.

Ecco un esempio per stimolare il processo di pensiero.

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

Ora questo va benissimo, ma cosa succede se devo cambiare il valore dei dati da “vero” a “falso”. Così che invece ottengo questo:

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
``` ```
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++

Quali sono le opzioni e la sintassi per farlo da cmd?…..

Aggiornamento:

Mi sono appena reso conto che l'esempio di cui sopra potrebbe essere stato troppo facile. …

Nell'esempio sopra riportato posso fare solo quanto segue:

&001

posso permettermi di cancellare completamente il valore, e poi aggiungerlo di nuovo, perché i dati contenuti al suo interno sono molto piccoli. È solo una stringa come “vero” o “falso”. Non è troppo difficile da ricreare.

Ecco un esempio più difficile con più contenuto di dati:

&001 &001

Voglio rimuovere solo parti del contenuto dei dati. In particolare, voglio rimuovere solo l'ultimo percorso di ricerca, il C:\Program Files (x86)\Notepad++.

Come si affronta questo??….

Non si aspetta che io ri-scriva tutto questo?………..

Risposte (2)

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

Usare REG ADD con il parametro “/f” per forzare la sovrascrittura.

REG ADD /? spiega i parametri.

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
``` ```
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

Per inserire un nuovo valore o commutare un valore di stringa da “false” a “true”, usare un comando come questo:

&001 &001

Esempio che legge un valore esistente e aggiunge una stringa prima di riscriverlo:

&001 &001

Nota: Questo esempio presuppone che il vecchio valore e il nuovo valore non abbiano spazi vuoti. Altrimenti si devono aggiungere le virgolette e modificare il parametro “token”. Controllo errori extra omesso per brevità. Tuttavia, tutti i codici di manipolazione del registro devono assolutamente effettuare un adeguato controllo degli errori.

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

Si può anche REG import foo.reg in cui foo.reg è un file contenente le solite informazioni del Registro di sistema come si esporta da regedit.exe.

Nel vostro esempio, questo sarebbe qualcosa come:

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++"
``` &001 



Ulteriori informazioni disponibili su [ questo articolo di Microsoft Technet ](https://technet.microsoft.com/en-us/library/cc742021.aspx).