Varolan bir kayıt defteri anahtarı değeri adının verilerini cmd'den nasıl değiştiririm?


19

Varolan bir kayıt defteri anahtarı değerini cmd'den nasıl değiştiririm?

Reg komutu için birçok seçenek ve anahtar, zil ve ıslık var. Anahtarları, alt anahtarları ve değer adlarını sorgulama, ekleme ve silme seçenekleri vardır. Ancak mevcut bir değer adının verilerini nasıl değiştirirsiniz? Değer adını tamamen kaldırıp yeniden ekleyip değiştirilen değeri / verileri yeniden yazıyor musunuz? Bu çok hantal görünüyor ...

Herhangi bir komut dosyası / toplu otomasyon ile ilgilenmiyorum, en azından şimdi değil, sadece cmd Reg komutu ile düz basit kayıt defteri düzenleme istiyorum. Bir anahtarı yok etmek zorunda kalmadan sadece bir saniye sonra bazı ek verilerle ekleyin. Regedit'te de yapabileceğiniz işlem.

İşte size düşünme sürecini teşvik etmek için bir örnek.

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

Şimdi bu iyi, ama ya değer verileri "true" dan "false" değiştirmek gerekir. Bunun yerine bunu elde:

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

Cmd bunu yapmak için seçenekler ve sözdizimi nelerdir? ....

Güncelleme:

Şimdi yukarıdaki örneğin çok kolay olabileceğini fark ettim ...

Yukarıdaki örnekte şunları yapabilirim:

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

Değeri tamamen silip sonra tekrar ekleyebilirim, çünkü içerdiği veriler çok küçüktür. Bu sadece "true" veya "false" gibi bir dize. Bunu yeniden oluşturmak çok zor değil.

İşte bu zor örneği daha fazla veri içeriğiyle:

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

Veri içeriğinin yalnızca bir kısmını kaldırmak istiyorum. Özellikle, sadece son arama yolunu, C: \ Program Files (x86) \ Notepad ++ kaldırmak istiyorum.

Bununla nasıl başa çıkıyorsunuz ?? ...

Tüm bunları yeniden yazmamı beklemiyorsun ?? ......


Sorunuz özellikle PATH'yi komut satırından veya herhangi bir değerden düzenlemekle ilgili mi? Ayrıca, herhangi bir reg değerinin değiştirilmesi veya eklenmesi / eklenmesi kolaydır, ancak bir değerin bölümlerini değiştirmek / silmek daha fazla çaba gerektirir.
Karan

Yanıtlar:


37

Kullanım REG ADD"/ f" parametresi ile yazma zorlamak için.

REG ADD /? Parametreleri açıklar.

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

Yeni bir değer eklemek veya dize değerini "false" değerinden "true" değerine değiştirmek için, aşağıdaki gibi bir komut kullanın:

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

Varolan bir değeri okuyan ve geri yazmadan önce bazı dizeler ekleyen örnek:

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

Not: Bu örnek, eski değerin ve yeni değerin boşluk içermediğini varsayar. Aksi takdirde tırnak eklemek ve "jetonlar" parametresini değiştirmek gerekir. Kısalık için ekstra hata kontrolü atlandı. Ancak, kod işleme tüm kayıt defteri kesinlikle yeterli hata denetimi yapmalıdır.


Yani ... bir "üzerine yazma" yı zorlamak aslında değer adına veri ekler mi? ... mevcut verilerin üzerine yazmaz ?? ...
Samir

Yani, yukarıdaki ikinci örneğimi kullanarak , dizenin sonuna reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment /v Path /d ;C:\Program Files (x86)\Some_software /feklemek ;C:\Program Files (x86)\Some_softwareiçin yapabileceğimi mi söylüyorsunuz ?
Samir

Hayır, "REG / ADD" sadece ekler veya üzerine yazar. Eklemek için değeri "REG / QUERY" yapmanız, istenen değeri hesaplamanız ve "REG / ADD" değerini geri eklemeniz gerekir.
Axel Kemper

Evet, durum böyle. Sadece denedim. reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false Değer Yükseltme Var, üzerine yaz (Evet / Hayır)? Böylece / f anahtarı olmadan üzerine yazmak isteyip istemediğinizi soracaktır.
Samir

Varolan bir değer adına nasıl veri ekleneceğini açıklayabilir misiniz? "Compute" ile ne demek istiyorsun?
Samir

2

Ayrıca REG import foo.reg, foo.regdışa aktarırken olağan kayıt defteri bilgilerini içeren bir dosya da olabilir regedit.exe.

Örneğinizde, bu şöyle bir şey olacaktır:

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

Bu Microsoft Technet makalesinde daha fazla bilgi bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.