Bagaimana cara mengubah data nama nilai kunci registri yang ada dari cmd?

19

Bagaimana cara mengubah nilai kunci registri yang ada dari cmd?

Ada banyak opsi dan sakelar, bel dan peluit, untuk perintah Reg. Ada opsi untuk meminta, menambah, dan menghapus kunci, subkunci, dan nama nilai. Tetapi bagaimana Anda memodifikasi data dari nama nilai yang ada? Apakah Anda benar-benar menghapus nama nilai, lalu menambahkannya lagi dan mengetik ulang nilai / data yang dimodifikasi? Tampaknya sangat rumit ...

Saya tidak tertarik pada otomatisasi skrip / batch, setidaknya tidak sekarang, saya hanya ingin mengedit registri sederhana melalui perintah cmd Reg. Tanpa perlu menghancurkan kunci hanya untuk menambahkannya sedetik kemudian dengan beberapa data tambahan. Jenis operasi yang sama dapat Anda lakukan di Regedit.

Inilah contoh bagi Anda untuk memacu proses berpikir.

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

Sekarang ini baik-baik saja, tetapi bagaimana jika saya harus mengubah nilai data dari "true" menjadi "false". Jadi saya mendapatkan ini sebagai gantinya:

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

Apa saja opsi dan sintaks untuk melakukan itu dari cmd? ....

Memperbarui:

Saya baru menyadari sekarang bahwa contoh di atas mungkin terlalu mudah ...

Dalam contoh di atas saya hanya bisa melakukan hal berikut:

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

Saya mampu sepenuhnya menghapus nilai, dan kemudian menambahkannya lagi, karena data yang terkandung di dalamnya sangat kecil. Itu hanya string seperti "benar" atau "salah". Itu tidak terlalu sulit untuk dibuat kembali.

Inilah contoh yang lebih sulit dengan lebih banyak konten data:

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

Saya hanya ingin menghapus bagian dari konten data. Secara khusus, saya hanya ingin menghapus jalur pencarian terakhir, C: \ Program Files (x86) \ Notepad ++.

Bagaimana Anda mengatasi yang ini ?? ...

Anda tidak mengharapkan saya untuk mengetik ulang semua ini ?? ......

Samir
sumber
Apakah pertanyaan Anda khusus tentang mengedit PATH dari baris perintah, atau nilai apa pun? Juga, mengganti atau menambahkan / menambahkan ke nilai reg apa saja itu mudah, tetapi memodifikasi / menghapus bagian dari suatu nilai akan membutuhkan lebih banyak usaha.
Karan

Jawaban:

37

Gunakan REG ADDdengan parameter "/ f" untuk memaksa menimpa.

REG ADD /? menjelaskan parameternya.

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 "\0" as the separator
/d          The data to assign to the registry ValueName being added
/f          Force overwriting the existing registry entry without prompt

Untuk memasukkan nilai baru atau beralih nilai string dari "false" ke "true", gunakan perintah seperti ini:

reg add HKCU\Software\Citrix\Receiver /t REG_SZ /v UpgradeDone /d true /f

Contoh yang membaca nilai yang ada dan menambahkan beberapa string sebelum menulis kembali:

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

Catatan: Sampel ini mengasumsikan bahwa nilai lama dan nilai baru tidak memiliki kosong. Kalau tidak, kita harus menambahkan tanda kutip dan mengubah parameter "token". Pemeriksaan kesalahan ekstra dihilangkan untuk singkatnya. Namun, semua kode memanipulasi registri pasti harus melakukan pengecekan kesalahan yang memadai.

Axel Kemper
sumber
Jadi ... memaksa "menimpa" sebenarnya menambahkan data ke nama nilai? ... Tidak menimpa data yang ada ?? ...
Samir
Jadi, dengan menggunakan contoh kedua saya di atas, Anda mengatakan bahwa saya dapat melakukan reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment /v Path /d ;C:\Program Files (x86)\Some_software /funtuk menambahkan ;C:\Program Files (x86)\Some_softwarepada akhir string?
Samir
Tidak, "REG / ADD" hanya memasukkan atau menimpa. Untuk menambahkan, Anda harus "REG / QUERY" nilainya, hitung nilai yang diinginkan dan "REG / ADD" kembali.
Axel Kemper
Ya, sepertinya inilah masalahnya. Saya baru saja mencoba ini. reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false Nilai UpgradeDone ada, menimpa (Ya / Tidak)? Jadi tanpa tombol / f, ia akan menanyakan apakah Anda ingin menimpa.
Samir
Bisakah Anda menjelaskan cara menambahkan data ke nama nilai yang ada? Apa yang Anda maksud dengan "menghitung"?
Samir
2

Anda dapat juga REG import foo.regdi mana foo.regadalah sebuah file yang berisi informasi registry yang biasa seperti yang Anda akan ekspor dari regedit.exe.

Dalam contoh Anda, ini akan menjadi sesuatu seperti:

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

Informasi lebih lanjut tersedia di artikel Microsoft Technet ini .

Andy Terra
sumber