Làm cách nào để sửa đổi dữ liệu của tên giá trị khóa đăng ký hiện có từ cmd?


19

Làm cách nào để sửa đổi giá trị khóa sổ đăng ký hiện có từ cmd?

Có rất nhiều tùy chọn và công tắc, chuông và còi, cho lệnh Reg. Có các tùy chọn để truy vấn, thêm và xóa các khóa, khóa con và tên giá trị. Nhưng làm thế nào để bạn sửa đổi dữ liệu của một tên giá trị hiện có? Bạn có loại bỏ hoàn toàn tên giá trị, sau đó thêm lại và nhập lại giá trị / dữ liệu đã sửa đổi không? Điều đó có vẻ rất cồng kềnh ...

Tôi không quan tâm đến bất kỳ kịch bản / lô tự động nào, ít nhất là không phải bây giờ, tôi chỉ muốn chỉnh sửa sổ đăng ký đơn giản thông qua lệnh cmd Reg. Không cần phải hủy khóa chỉ để thêm một giây sau với một số dữ liệu bổ sung. Loại hoạt động tương tự bạn có thể làm trong Regedit.

Đây là một ví dụ để bạn thúc đẩy quá trình suy nghĩ.

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

Bây giờ điều này là tốt, nhưng nếu tôi phải thay đổi dữ liệu giá trị từ "đúng" thành "sai". Vì vậy, tôi nhận được điều này thay thế:

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

Các tùy chọn và cú pháp để làm điều đó từ cmd là gì? ....

Cập nhật:

Bây giờ tôi mới nhận ra rằng ví dụ trên có thể quá dễ dàng ...

Trong ví dụ trên tôi chỉ có thể làm như sau:

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

Tôi có thể đủ khả năng xóa hoàn toàn giá trị, và sau đó thêm lại, vì dữ liệu chứa trong đó rất nhỏ. Nó chỉ là một chuỗi như "đúng" hoặc "sai". Điều đó không quá khó để tạo lại.

Đây là một ví dụ khó hơn với nhiều nội dung dữ liệu hơn:

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

Tôi muốn chỉ loại bỏ các phần của nội dung dữ liệu. Cụ thể, tôi chỉ muốn xóa đường dẫn tìm kiếm cuối cùng, C: \ Program Files (x86) \ Notepad ++.

Làm thế nào để bạn giải quyết điều này ?? ...

Bạn không mong đợi tôi gõ lại tất cả những thứ này ??


Là câu hỏi của bạn cụ thể về việc chỉnh sửa PATH từ dòng lệnh, hoặc bất kỳ giá trị nào? Ngoài ra, thay thế hoặc thêm / thêm vào bất kỳ giá trị reg nào là dễ dàng, nhưng sửa đổi / xóa các phần của một giá trị sẽ đòi hỏi nhiều nỗ lực hơn.
Karan

Câu trả lời:


37

Sử dụng REG ADDvới tham số "/ f" để buộc ghi đè.

REG ADD /? giải thích các tham số.

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

Để chèn một giá trị mới hoặc chuyển một giá trị chuỗi từ "false" thành "true", hãy sử dụng một lệnh như thế này:

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

Ví dụ đọc giá trị hiện có và nối thêm một số chuỗi trước khi viết lại:

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

Lưu ý: Mẫu này giả định rằng giá trị cũ và giá trị mới không có khoảng trống. Nếu không, người ta phải thêm dấu ngoặc kép và thay đổi tham số "mã thông báo". Kiểm tra lỗi thêm bỏ qua cho ngắn gọn. Tuy nhiên, tất cả các mã thao tác đăng ký chắc chắn phải kiểm tra lỗi đầy đủ.


Vì vậy, ... buộc "ghi đè" thực sự gắn dữ liệu vào tên giá trị? ... Nó không ghi đè lên dữ liệu hiện tại ?? ...
Samir

Vì vậy, bằng cách sử dụng ví dụ thứ hai của tôi ở trên, bạn đang nói rằng tôi có thể làm gì reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment /v Path /d ;C:\Program Files (x86)\Some_software /fđể nối ;C:\Program Files (x86)\Some_softwarevào cuối chuỗi?
Samir

Không, "REG / ADD" chỉ chèn hoặc ghi đè. Để nối thêm, bạn phải "ĐĂNG KÝ / QUAY" giá trị, tính toán giá trị mong muốn và "ĐĂNG / THÊM" lại.
Axel Kemper

Vâng, đây có vẻ là trường hợp. Tôi chỉ thử điều này. reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false Nâng cấp giá trị Có tồn tại, ghi đè (Có / Không) không? Vì vậy, không có công tắc / f, nó sẽ hỏi bạn nếu bạn muốn ghi đè.
Samir

Bạn có thể giải thích làm thế nào để nối dữ liệu vào một tên giá trị hiện có? Bạn có ý nghĩa gì khi "tính toán"?
Samir

2

Bạn cũng có thể REG import foo.regtrong đó foo.reglà một tập tin có chứa các thông tin đăng ký bình thường như bạn muốn xuất khẩu từ regedit.exe.

Trong ví dụ của bạn, đây sẽ là một cái gì đó như:

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

Thông tin thêm có sẵn tại bài viết Microsoft Technet này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.