- 締切済み
CoInitializeSecurityが失敗する
WMIにてUSB情報を取得するプログラムを作成しています。 開発環境:Visual Studio 2008 / MFCアプリケーション XPにてプログラムを作成し、当該データの取得に成功したため、 OSのバージョン別のテストを行ったところ、 XP、Vista SP1では成功し、Vista SP2、Windows7では失敗しました。 Visual StudioがインストールされているVista、Windows7が 無いため、正確なDebugが出来ていないのですが、 CoInitializeをし、CoInitializeSecurityをしたところで、 戻り値が失敗となり終了してしまっていました。 色々と調べてみたのですが、原因がまったくわかりません。 ちなみに、テスト機では管理者ユーザでログインし、 WMIコントロールで、アクセス権をチェックしてみましたが、 問題ありませんでした。 なにか、手がかりになるような事でも構いませんので、 アドバイスお願いします。 ※失敗しているCoInitializeSecurity関数 hRes = CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0);
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tsukasa-12r
- ベストアンサー率65% (358/549)
失敗した時の CoInitializeSecurity() の戻り値はどうなっているのでしょうか? 検証用にプログラムを作成して、MessageBox などで戻り値を確認できるようにして確認されてはいかがでしょうか。 試しに Windows7 にて、 int _tmain(int argc, _TCHAR* argv[]) { HRESULT hRes = CoInitialize( NULL ); if( hRes == S_OK ) { hRes = CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0); } if( hRes == S_OK ) { MessageBox( NULL, _T("Success."), _T("Test"), MB_ICONINFORMATION ); } else { MessageBox( NULL, _T("Failure."), _T("Test"), MB_ICONWARNING ); } return 0; } というプログラムを、管理者ではない通常のユーザで実行してみましたけど、"Success." となりましたので、OS の問題という訳ではなさそうですね。 ↓のページが何か参考になるかもしれません。 http://msdn.microsoft.com/ja-jp/events/dd253092.aspx
お礼
返答が遅れて申し訳ありません。 テスト機が他のプロジェクトで使用されていて、当分使えない状況となっております。 他に、Windows7が入っているPCを見つけたので、 それでテストしたところ、全く同じプログラムで 正常に挙動しました。 どうも、PCの設定等の問題かと思われます。 現象が起こったPCが空いたタイミングで、 設定周りを調べてみようかと思います。