• 締切済み

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);

みんなの回答

回答No.1

失敗した時の 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

lhouse
質問者

お礼

返答が遅れて申し訳ありません。 テスト機が他のプロジェクトで使用されていて、当分使えない状況となっております。 他に、Windows7が入っているPCを見つけたので、 それでテストしたところ、全く同じプログラムで 正常に挙動しました。 どうも、PCの設定等の問題かと思われます。 現象が起こったPCが空いたタイミングで、 設定周りを調べてみようかと思います。

関連するQ&A

  • Visual Basic 6.0のインストールが失敗する

    毎々参考にさせていただいております。 早速ですが、質問させていただきます。 OSを再インストールしたため、環境を戻そうとしています。 いまさらながらVisual Basic 6.0をインストールしたところ、ファイル コピーが終わって最後の段階で、"msrdo20.dllが登録できませんでした" というようなエラーが出て、インストールが成功しませんでした。 regsvr32を使って手動で登録しようとしても、失敗してしまいました。 仕方なくアンインストールを行ってから、再インストールしようとした のですが、インストールが成功していないためアンインストールもでき ないようです。 どうすればインストールできるのでしょうか。 今までは普通にインストールできていたのですが・・・。 環境は以下のとおりです。 OS  :Windows XP SP2 (Windows Updateは最新です) メモリ:1GB ソフト:Visual Studio 6.0 よろしくお願いいたします。

  • vista 更新プログラムのインストール失敗

    vistaを使用しているのですが、わずかの更新プログラムだけ インストールが成功して、それ以外の19個の更新プログラムを インストールしても必ず失敗してしまいます。 どうすれば成功できるか教えていただけないでしょうか?お願いいたします。

  • VBSからbat実行(WMI)して戻り値を取得する

    WSH初心者です。 WSH(remote.vbs)からWMI使用で別サーバのA.batを実行しているのですが、 A.batの戻り値はどのように取得すれば良いのでしょうか? -■remote.vbs(一部抜粋)------------------------------------------ ' #WMI に接続 Wim32_Process クラスを取り出す Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" & "!" & リモート先PC & "Win32_Process") ' #プロセスの作成 lngResult = clsProcess.Create(A.bat, null, null, processId) -------------------------------------------------------------- -■A.bat------------------------------------------ exit /B %RetCode% ------------------------------------------------- A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。 どなたかご存じでしたらご教授の程よろしくお願い致します。

  • SQLServer2005 SP3 インストール失敗

    Windows XP SP3 のパソコンに Visual Studio 2005 Professional Editionをインストールしました。 そのときVisual StudioについてきたSQL Server Developer Editionも同時に インストールしました。 こないだMicrosoftUpdateを行ったのですが、 Microsoft SQL Server 2005 Express Edition Service Pack 3(KB955706) のアップデートでエラー(エラー番号2BC9)になりアップデートに失敗します。 ネットで調べ Microsoft SQL Server 2005 Service Pack 3 (Express EditionではないSP3)をインストールするとよいと 書いてあったので実行したところ、インストールは完了したのですが、 そのあとまたMicrosoftUpdateを実行すると、更新プログラムにはいまだ Microsoft SQL Server 2005 Express Edition Service Pack 3(KB955706) が表示され、実行するとエラーになります。 いまは、↓の2つの疑問があります。 1.Developer EditionでもSP3はExpress Editionのバージョンをインストールするのか? (SP3をインストールするにはどのバージョンをインストールすればよい?) 2.SQL Server 2005 Developer Editionでのバージョン確認方法 どちらかでもよいのでわかるかたおしえてください

  • Visual Studio 更新プログラム

    一週間前にパソコンを買い替えセットアップしシャットダウン後に、MSより自動更新プログラムがインストールされました。 更新プログラムで、Visual Studio 2010 Tools for Office Runtime 更新プログラム3本の内 1本が失敗となり更新できませんでした。 しかし、このパソコンにはVisual Studioは入っていないのに、2本は更新、1本は失敗。 そこで質問なのですが、 Q1:なぜVisual Studioが入っていないのに更新されたのでしょうか。 Q2:これらVisual Studio更新プログラムを削除することはできないのでしょうか。 使用パソコンはNEC LaVie LS550TS OSはWindows8.1 MSはHome and Business Premium? ご教授をよろしくお願いします。

  • デバッガでのfopenの動作

    Visual Studio 2005 を使っています。 Win32コンソールプログラムでプログラムを作成しました。 fopenを使ってファイルを読み込むプログラムで、 DOS窓では正しく動作するのに、 デバッガでトレースするとファイルポインタにNULLが返ってしまいます。 アドバイスいただければと思います。

  • Windows Updatrで失敗が続く

    最近 Updatrで失敗が続くので更新履歴の表示を確認しました。 office outiook 2007 junk Email Fiiter(KB2768021)の更新プログラムです。 それで更新プログラムのインストールの問題に対するトラブルシューテイングを みて試してみたのですが解決方法がわかりません。 更新の履歴では、2012年10月1日まではすべて成功しておりました。 10月2日Microsoft Security Essentiais Client Update Packge KB2754296 重要 成功以降 Microsoft Security Essentiais 定義の更新のみが  10月2日 失敗が始まり、以降成功~失敗を繰り返しておりました。 その他の更新プログラムの失敗はありません。 更に4月11日 office outiook 2007 junk Email Fiiter(KB2768021)が失敗し 10回ほど失敗が続きインストール出来ない状況です。 4月14日現在Microsoft Security Essentiais 定義の更新は成功しました。 WINDOWS VISTA VL500GLを使用しております。 なお、システムとメンテナンス 更新プログラムのインストールより実効すると、 他のプログラムが使用しています。が表示されたり、 エラーコード 80070652 不明なエラーが発生しました。と表示されます。 対処方法を 解りやすくご教授下さるようお願いいたします。

  • C&C++からC#のexeを呼ぶ方法

    いつもお世話になっております。 環境 Windows VISTA SP1 Visual Studio 2008 疑問 C(C++)からC#で作られたexeを呼ぶ方法がわかりません。 ret = CreateProcess(NULL,Common_Data->exename,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi); の様にCreateProcessではexeを呼べません。 (Common_Data->exenameにはGetCurrentDirectory使って 絶対パス指定してます) おそらくC#でつくったプロジェクトの設定を変えてビルド する必要があると推測していますが どうすればいいのかわからないです。 以上 よろしくお願いいたします。

  • Visual Studio C++のデータ入力

    C言語を一から勉強しています。 Visual Studio C++を使ってプログラムを入力していて、デバッグの際にscanfでテストデータを入れたいのですが、入力の方法が分かりません。 どうやったらよいのでしょうか。 Visual Studio 2019で、C++のコンソールアプリケーションというものを使っています。

  • prnportコマンドを使用するとエラーとなる

    DOSでバッチプログラムを作成しておりますが、以下の構文でprnportコマンドを使用すると、エラーとなります。 原因等お分かりになる方がいらっしゃいましたら、ご教示下さい。 構文 @echo off cscript c:\windows\system32\prnport.vbs -a -s test -r IP_192.168.100.100 pause >nul エラー内容 「WMI サービスに接続できません エラー 0x800706BA RPC サーバーを利用できません。」 環境 WindowsXP Pro SP2 よろしくお願いします。

専門家に質問してみよう