Windows 2008 64bitでレジストリエントリを作成します
-
27-09-2019 - |
質問
Windowsレジストリの読み取り/書き込みをカバーするために、たくさんのユニットテストを書きました。彼らはを使用します cregkey ATL API。
これらはXP Proの私のデスクトップマシンで正常に動作しましたが、テストがビルドマシンで実行されるようになったとき - Windows 2008 X64サーバー - テストは失敗します ERROR_ACCESS_DENIED
キーを介して作成しようとするとき 作成.
ビルドマシンにログインしているユーザーは、管理者グループに属します。
Googleは、ノートパッドとMSDNでレジストリを作成する方法のリストを作成します。リンクをクリックすると、ページが不足しています。
私が知っておくべきことは、サーバーで実行されるときにテストを実行できるようにするために必要なことは? セキュリティ属性が必要だと思いますが、これを掘り下げたことがないので、どこから始めればよいかわかりません。どんな助けも感謝します。
解決
グローバルレジストリキーを変更または作成するプログラムの日々は、終了し、完了しています。管理者としてログインするため、XPボックスで機能します。 Vista、Win7、およびWindows 2008には、管理者アカウントにログオンした場合でも、レジストリをいじる人(マルウェアなど)がいないようにするためのUACがあります。
プログラムにマニフェストを追加してUACプロンプトを呼び出すことはできますが、それは単体テストでは完全に非実用的ではありません。ユニットテストをやり直して、代わりにhkey_current_user hiveに書き込みます。おそらく、テストを書いたプログラムにも同じ考慮事項が適用されます。
他のヒント
管理者としてログインするだけでは不十分です。プログラムは、管理特権(つまり、マニフェストを使用する)で実行する必要があります。