0

次のアクションを実行するには、WMI に依存しないスクリプトを作成する必要があります。

  1. レジストリ値が存在するかどうか、および必要なタイプがあるかどうかを確認します
  2. レジストリ値が存在するがタイプが間違っている場合は、削除します
  3. レジストリ値が存在しない場合、または手順 2 で削除された場合は、特定のタイプで作成します
  4. レジストリ値が存在、正しいタイプの場合は、その値が正しいことを確認してください

私がインターネットで見つけたほとんどすべてのレジストリ操作 VBScript コード スニペットは、WMI に依存しています。特定の理由により、これは受け入れられません。

WMI に依存せずにレジストリを操作する方法に関する推奨事項はありますか?

4

1 に答える 1

0

Windows Scripting Host (WSH)の VBScript/JScriptには、WScript.Shellオブジェクトからのレジストリ関数がありますが、キー/値の読み取り、書き込み、および削除に制限されています。レジストリ キーまたは値を読み取って結果を確認する以外に、その存在を取得する機能はありません。レジストリ値の型を取得する機能もありません。

WMI オブジェクト以外からレジストリにアクセスする他の方法は、パッケージ化されたREG.EXEコマンド ライン ツールをWScript.Shell.Exec関数経由で使用することです。これは、、、、、またはコマンド パラメータを使用QUERYして実行されます。を実行して使用方法の概要を表示するか、、 などを使用してコマンドの使用方法の詳細を表示します。ADDDELETEIMPORTEXPORTREG.EXEREG.EXE QUERY /?REG.EXE EXPORT /?

コマンドの出力にはQUERY、値のデータとそのタイプ (存在する場合) が表示されます。このEXPORTコマンドも使用できますが、結果がREGファイルに保存される点が異なります。の助けを借りて、ツールの結果をREG.EXEファイルにリダイレクトすることもできますCMD.EXE。例えば:

CMD.EXE /C REG.EXE QUERY "HKEY_CURRENT_USER\Control Panel\Cursors" > "reg output.txt"

の内容は、ファイルoutput.txtの内容とは異なることに注意してください。REGこのファイルは、Microsoft Knowledge Base KB310516REGで部分的に説明されている標準形式です。

ツールの終了コードをチェックし、REG.EXEその出力または生成されたREGファイルを解析することで、レジストリ値のタイプを取得できます。WScript.Shell可能であれば、オブジェクトを使用して実行できるレジストリ操作を使用し、パフォーマンスが懸念される場合に使用する必要があります。

于 2012-08-28T10:41:35.323 に答える