プログラムで .reg ファイルを win32 レジストリにマージする
-
09-06-2019 - |
質問
プログラムで .reg ファイルをレジストリにマージする最善の方法は何ですか?これは単体テスト用です。.reg ファイルはテスト アーティファクトであり、テストの開始時と終了時に追加され、削除されます。
または、レジストリに対して単体テストを行うより良い方法がある場合...
解決
.reg ファイルを使用してレジストリ キーを削除することは可能ですが、それがどの程度文書化されているかはわかりません。その方法は次のとおりです。
REGEDIT4
[-HKEY_CURRENT_USER\Software\<otherpath>]
の -
キーの前に名前が表示されます Regedit
キーを削除したいことを示します。
これをサイレントに実行するには、次のように入力します。
regedit /s "myfile.reg"
他のヒント
シェルアウトする場合は、reg コマンドを使用します (詳細は以下を参照)。使用している言語を教えていただければ、言語固有のコードを提供できます。
C:>reg /?
REG動作[パラメータ一覧]
操作[クエリ|追加|削除|コピー|保存|負荷|アンロード|復元|比較|エクスポート|インポート|フラグ]
リターンコード:(REG COMPAREを除く)
0-成功した1-失敗
特定の操作タイプに関するヘルプについては、以下を参照してください。
登録追加 /?登録削除 /?[略]
ファイルの関連付けを確認して調べてみました。
.reg ファイルは単に最初のパラメータとして呼び出されているようです。 regedit.exe
Windows 上で実行可能。
だからあなたはただ言うことができます regedit.exe "mytest.reg"
. 。よくわからないのは、確認を求めるポップアップ表示されるダイアログボックスを削除する方法です。
Win32 API 関数 ShellExecute() または ShellExecuteEx() を使用します。コメントが「オープン」の場合は、.reg ファイルをマージする必要があります。テストしていませんが、動作するはずです。
単体テストの作成で最もイライラすることの 1 つは、依存関係の処理です。テスト駆動開発の最も優れた点の 1 つは、依存関係から切り離されたコードが生成されることです。クールですね?
このような質問をしていることに気づいたとき、私は自分が書いているコードを依存関係から切り離す方法を探します。レジストリの読み取りと、テストする複雑さを分離してください。