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

値を完全に削除してから追加し直すことができます。これは、値に含まれるデータが非常に小さいためです。これは、「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 ++のみを削除します。

これにどのように取り組みますか?? ...

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


コマンドラインからのPATHの編集に関する質問ですか、それとも何らかの値ですか?また、任意のreg値の置換または追加/追加は簡単ですが、値の一部を変更/削除するにはより多くの労力が必要です。
カラン

回答:


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

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


それで...「上書き」を強制すると、実際にデータが値の名前に追加されますか?...既存のデータは上書きされませんか??
...-サミール

したがって、上記の2番目の例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すると、文字列の最後に追加することができると言っているのでしょうか。
サミール

いいえ、「REG / ADD」は単に挿入または上書きします。追加するには、値を「REG / QUERY」し、必要な値を計算してから「REG / ADD」する必要があります。
アクセルケンパー

はい、そうです。私はこれを試しました。reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false 値UpgradeDoneが存在し、上書きしますか(はい/いいえ)?/ fスイッチを指定しないと、上書きするかどうかを尋ねられます。
サミール

既存の値の名前にデータを追加する方法を説明できますか?「計算」とはどういう意味ですか?
サミール

2

あなたはすることもでき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のこの記事をご覧ください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.