0

Windows レジストリの読み取り/書き込みをカバーするために、一連の単体テストを作成しました。それらはCRegKey ATL API を使用します。

これらは XP Pro のデスクトップ マシンでは正常に動作しましたが、テストがビルド マシン (Windows 2008 x64 サーバー) で実行されるようになると、CreateERROR_ACCESS_DENIEDを介してキーを作成しようとすると、テストが失敗します。

ビルド マシンにログインしているユーザーは、管理者グループに属しています。

Google はメモ帳でレジストリを作成する方法のリストを表示し、msdn はリンクをクリックするとページが見つからないというメッセージを表示し続けます。

私が知る必要があるのは、サーバー上で実行するときにテストに合格できるようにするために何をする必要があるかということです? セキュリティ属性が必要だと思いますが、これについて詳しく調べたことがないので、どこから始めればよいかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1

プログラムがグローバル レジストリ キーを変更または作成する時代は終わりました。管理者としてログインするため、XP ボックスで引き続き機能します。Vista、Win7、および Windows 2008 には UAC があり、管理者アカウントでログオンしている場合でも、何者か (マルウェアなど) がレジストリをいじるのを防ぎます。

プログラムにマニフェストを追加して UAC プロンプトを呼び出すことはできますが、これは単体テストにはまったく実用的ではありません。単体テストを修正して、代わりに HKEY_CURRENT_USER ハイブに書き込みます。同じ考慮事項は、テストを作成したプログラムにも当てはまります。

于 2010-08-10T14:21:07.850 に答える
1

管理者としてログインするだけでは十分ではありません。プログラムは管理者権限で (つまり、マニフェストを使用して) 実行する必要があります。

于 2010-08-10T13:55:21.887 に答える