web-dev-qa-db-ja.com

cmdから既存のレジストリー値の名前のデータを変更する方法を教えてください。

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

その中に含まれるデータは非常に小さいので、値を完全に削除してから再度追加する余裕があります。それは単に "true"や "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 Files(x86)\ Notepad ++のみを削除します。

どうやってこれに取り組むのですか?.

あなたは私がこれすべてを再入力することを期待していません?? ......

19
Samir

上書きを強制するには、 "/ f"パラメータを付けてREG ADDを使用します。

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

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

36
Axel Kemper

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の記事 をご覧ください。

2
Andy Terra