ฉันจะแก้ไขข้อมูลชื่อค่าคีย์รีจิสทรีที่มีอยู่จาก cmd ได้อย่างไร


19

ฉันจะแก้ไขค่าคีย์รีจิสทรีที่มีอยู่จาก cmd ได้อย่างไร

มีตัวเลือกมากมายและสวิตช์ระฆังและนกหวีดสำหรับคำสั่ง Reg มีตัวเลือกในการสืบค้นเพิ่มและลบคีย์คีย์ย่อยและชื่อค่า แต่คุณจะแก้ไขข้อมูลชื่อค่าที่มีอยู่ได้อย่างไร คุณลบชื่อค่าทั้งหมดแล้วเพิ่มอีกครั้งและพิมพ์ค่า / ข้อมูลที่แก้ไขใหม่ ดูเหมือนจะยุ่งยากมาก ...

ฉันไม่สนใจสคริปต์อัตโนมัติ / ชุดใดอย่างน้อยตอนนี้ฉันต้องการแก้ไขรีจิสทรีธรรมดาธรรมดาผ่านคำสั่ง cmd Reg โดยไม่จำเป็นต้องทำลายคีย์เพียงเพิ่มมันในภายหลังด้วยข้อมูลเพิ่มเติม การทำงานแบบเดียวกับที่คุณสามารถทำได้ใน Regedit

นี่คือตัวอย่างสำหรับคุณในการกระตุ้นกระบวนการคิด

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

ทีนี้อันนี้ใช้ได้ แต่ถ้าฉันต้องเปลี่ยนข้อมูลค่าจาก "true" เป็น "false" เพื่อให้ฉันได้รับสิ่งนี้แทน:

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

ตัวเลือกและไวยากรณ์สำหรับการทำเช่นนั้นจาก cmd คืออะไร ....

ปรับปรุง:

ฉันเพิ่งรู้ว่าตัวอย่างข้างต้นอาจจะง่ายเกินไป ...

ในตัวอย่างข้างต้นฉันสามารถทำสิ่งต่อไปนี้:

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

ฉันต้องการลบเนื้อหาข้อมูลบางส่วนเท่านั้น โดยเฉพาะฉันต้องการลบพา ธ การค้นหาล่าสุดไฟล์ C: \ Program (x86) \ Notepad ++

คุณจะรับมือกับเรื่องนี้ได้อย่างไร ...

คุณไม่ได้คาดหวังให้ฉันพิมพ์ทั้งหมดนี้อีกครั้ง ......


คำถามของคุณเกี่ยวกับการแก้ไข PATH จากบรรทัดคำสั่งหรือค่าใด ๆ หรือไม่? นอกจากนี้การเปลี่ยนหรือผนวก / ต่อท้ายค่า reg ใด ๆ เป็นเรื่องง่าย แต่การแก้ไข / ลบส่วนของค่าจะต้องใช้ความพยายามมากขึ้น
Karan

คำตอบ:


37

ใช้REG ADDกับพารามิเตอร์ "/ f" เพื่อบังคับให้เขียนทับ

REG ADD /? อธิบายพารามิเตอร์

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

ในการแทรกค่าใหม่หรือสลับค่าสตริงจาก "false" ถึง "true" ให้ใช้คำสั่งดังนี้:

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

ตัวอย่างที่อ่านค่าที่มีอยู่และต่อท้ายสตริงก่อนเขียนกลับ:

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

หมายเหตุ:ตัวอย่างนี้สมมติว่าค่าเก่าและค่าใหม่ไม่มีช่องว่าง มิฉะนั้นจะต้องเพิ่มราคาและเปลี่ยนพารามิเตอร์ "โทเค็น" การตรวจสอบข้อผิดพลาดพิเศษถูกละเว้นเพื่อความกะทัดรัด อย่างไรก็ตามรีจิสทรีทั้งหมดที่จัดการกับรหัสต้องทำการตรวจสอบข้อผิดพลาดอย่างเพียงพอ


ดังนั้น ... บังคับให้ "เขียนทับ" จริงผนวกข้อมูลเข้ากับชื่อค่าหรือไม่ ... มันไม่ได้เขียนทับข้อมูลที่มีอยู่หรือไม่ ...
Samir

ดังนั้นโดยใช้ตัวอย่างที่สองของฉันข้างต้นคุณกำลังบอกว่าฉันจะทำreg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment /v Path /d ;C:\Program Files (x86)\Some_software /fต่อ;C:\Program Files (x86)\Some_softwareท้ายสตริง?
Samir

ไม่ "REG / ADD" เป็นเพียงส่วนแทรกหรือเขียนทับ ในการต่อท้ายคุณจะต้อง "บันทึกค่า / QUERY" คำนวณค่าที่ต้องการและ "REG / ADD" กลับคืนมา
Axel Kemper

ใช่มันน่าจะเป็นอย่างนั้น ฉันแค่ลองสิ่งนี้ reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false มีค่า UpgradeDone แล้วเขียนทับ (ใช่ / ไม่ใช่) หรือไม่ ดังนั้นหากไม่มีสวิตช์ / f ระบบจะถามคุณว่าคุณต้องการเขียนทับหรือไม่
Samir

คุณสามารถอธิบายวิธีผนวกข้อมูลเข้ากับชื่อค่าที่มีอยู่ได้หรือไม่? คุณหมายถึงอะไรโดย "คำนวณ"?
Samir

2

นอกจากนี้คุณยังสามารถREG import foo.regที่เป็นไฟล์ที่มีข้อมูลรีจิสทรีปกติตามที่คุณต้องการส่งออกจากfoo.regregedit.exe

ในตัวอย่างของคุณนี่จะเป็นสิ่งที่ชอบ:

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

ข้อมูลเพิ่มเติมสามารถดูได้ที่Microsoft TechNet บทความนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.