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

Jak zmodyfikować dane istniejącej nazwy klucza rejestru od cmd?

Jak zmodyfikować istniejącą wartość klucza rejestru od cmd?

Istnieje wiele opcji i przełączników, dzwonków i gwizdków, dla polecenia Reg. Istnieją opcje zapytań, dodawania i usuwania kluczy, subkluczy i nazw wartości. Ale jak zmodyfikować dane istniejącej nazwy wartości? Czy można całkowicie usunąć nazwę wartości, a następnie dodać ją ponownie i ponownie wpisać zmodyfikowaną wartość/dane? To wydaje się bardzo kłopotliwe…

Nie interesuje mnie żaden skrypt/ automatyka wsadowa, przynajmniej nie teraz, chcę tylko zwykłą prostą edycję rejestru poprzez komendę cmd Reg. Bez konieczności niszczenia klucza tylko po to, aby dodać go sekundę później z dodatkowymi danymi. To samo możesz zrobić w Regedit.

Oto przykład, jak pobudzić proces myślenia.

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

Teraz ten jest w porządku, ale co jeśli muszę zmienić dane wartości z “prawdziwych” na “fałszywe”. Tak, żebym dostał to zamiast tego:

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

Jakie są opcje i składnia do zrobienia tego z cmd?….

Update:

Właśnie zdałem sobie sprawę, że powyższy przykład mógł być po prostu zbyt prosty. …

W powyższym przykładzie mogę po prostu zrobić co następuje:

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

Mogę sobie pozwolić na całkowite usunięcie wartości, a następnie dodanie jej ponownie, ponieważ zawarte w niej dane są bardzo małe. Jest to po prostu ciąg znaków typu “true” lub “false”. Nie jest to zbyt trudne do odtworzenia.

Oto twardszy przykład z większą zawartością danych:

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

Chcę usunąć tylko część zawartości danych. Konkretnie, chcę usunąć tylko ostatnią ścieżkę wyszukiwania, plik C:\Program Files (x86)\Notepad++.

Jak sobie z tym poradzisz?…

Nie oczekujesz, że to wszystko przepiszę ponownie?……

回答 (2)

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

上書きを強制的に行うには、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 "```
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

新しい値を挿入したり、文字列の値を "false "から "true "に切り替えたりするには、次のようなコマンドを使用します:

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

既存の値を読み込んで、それを書き戻す前に文字列を追加する例:

&001

注:このサンプルでは、古い値と新しい値に空白がないと仮定しています。それ以外の場合は、引用符を追加して tokens パラメータを変更する必要があります。簡潔にするために、余分なエラーチェックは省略しています。しかし、レジストリを操作するすべてのコードは、必ず適切なエラーチェックを行わなければなりません。

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

また、REG import foo.regからエクスポートしたように、foo.regが通常のレジストリ情報を含むファイルになっているregedit.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の記事で利用可能です。

関連する質問

3
19
10
28
5