質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

264閲覧

CoCreateInstanceで0x80070002エラー

minahiro1989

総合スコア1

COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2024/02/11 07:56

実現したいこと

CoCreateInstanceを使用してファイル読み取りのcomオブジェクトを作成しています。

発生している問題・分からないこと

使用する端末によって0x80070002のエラーが発生します。
ビルド構成:.netFramework4.8
エラー発生端末
OS:Windows10Pro
バージョン:1809

エラー未発生端末
OS:Windows10Pro、Windows11
バージョン:最新
アクセス権限、レジストリの登録状況の確認、セキュリティソフトの停止は確認済みです。
端末依存でこのようなエラーが起こるものなのでしょうか。

エラーメッセージ

error

10x80070002

該当のソースコード

C++

1_CSIniLib* cpie = NULL ; 2HRESULT CoInitialize(NULL); 3OLECHAR* guidString; 4 5 HRESULT hre = CoCreateInstance(CLSID_CSIniLib, 6 NULL, 7 CLSCTX_INPROC_SERVER, 8 __uuidof(_CSIniLib), 9 reinterpret_cast<void**>(&cpie)); 10if(FAILED(hre)) { 11 ; 12} else { 13 cpie->UserCertDat(&b_tszBuffer) ; 14 cpie->Release(); 15 cpie = NULL; 16 m_bstr = b_tszBuffer ; 17 USES_CONVERSION; 18 RetString = OLE2W(b_tszBuffer) ; 19}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

[CoCreateInstance 80070002]でgoogle検索かけましたが有用な情報が発見できませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matukeso

2024/02/15 13:17

そのCOMのdllを指定してLoadLibraryを呼んだら成功します?
minahiro1989

2024/02/19 23:43

回答ありがとうございます。 申し訳ございません、回答いただいた内容を検証できませんでしたが、 windowsupdateを行う機会があり最新化することにより解決しました。
guest

回答2

0

ベストアンサー

0x80070002はERROR_FILE_NOT_FOUNDですね。
CLSID_CSIniLibは自作のライブラリですよね?DLLが見つからないじゃないかなぁ。
レジストリの登録状況は調べたとのことですが、HKCR/CLSID/[CSIniLibのGUID]/InprocServer32の規定値に正しいパスが書かれていますか?

あとはライブラリが.NETのようですが、ランタイムが入ってないのも考えられますね。
そのライブラリを問題の環境上でDependencyWalkerとかで開いたら、解決できない依存ライブラリがあったりしないでしょうか?

投稿2024/02/11 09:15

編集2024/02/11 09:18
Shunly

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

minahiro1989

2024/02/12 00:49

さっそくの回答ありがとうございます。試してみましたが解決できませんでした。 >レジストリの登録状況は調べたとのことですが、HKCR/CLSID/[CSIniLibのGUID]/InprocServer32の規定値に正しいパスが書かれていますか? 私もその辺が怪しいと思って確認しましたところ、書かれていました。 >そのライブラリを問題の環境上でDependencyWalkerとかで開いたら、解決できない依存ライブラリがあったりしないでしょうか? このあたりもDependencyで調査済みですね・・・特に足りていないものはありませんでした。
Shunly

2024/02/12 06:55

とすると何か動的な原因に思えますね。 SysinternalsのProcess Monitorを動かしてみるとかどうでしょう?
minahiro1989

2024/02/16 07:59

申し訳ありません、お返事大変遅くなりました。 回答いただきありがとうございます、非常に参考になりました。 さっそく教えていただいたProcessMonitorを使用して正常端末との差異確認を行うと、 mscoree.dllで異なった動きが確認されました。 mscoree.dllの更新日時が違うのでこのような差異が出てきたんでしょうか。 正常端末:mscoree.dll 更新日時2019年12月07日 18:10 エラー発生端末:mscoree.dll 更新日時2018年09月15日 16:29 エラー発生端末は諸事情によりオフライン環境ですので、WindowsUpdateがかけれない状況です。
Shunly

2024/02/16 15:40

Win10 1809は.net 4.8までサポートしているはずですが、何か微妙なバージョンが違うんですかね。 HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full の内容は一致していますか? あとは問題の環境でildasmとか使ってCSIniLibの.NETの依存関係が解決できるか調べてみるとかでしょうか。 CSIniLibの対象バージョンが4.8が重要でないなら下げてみるのも手ですね。4.0系なら古い対象バージョンでも新しいランタイムで動くはずだし。
minahiro1989

2024/02/19 23:45

回答ありがとうございます。 レジストリ確認を行いましたが内容は一致しておりました。 ildasmは開発環境を入れることが出来なかったので試すことはできませんでしたが、 windowsupdateを行える機会があり、最新化することで解決いたしました。 いろいろアドバイスをいただきありがとうございました。
guest

0

さっそくの回答ありがとうございます。

レジストリの登録状況は調べたとのことですが、HKCR/CLSID/[CSIniLibのGUID]/InprocServer32の規定値に正しいパスが書かれていますか?

私もその辺が怪しいと思って確認しましたところ、書かれていました。

そのライブラリを問題の環境上でDependencyWalkerとかで開いたら、解決できない依存ライブラリがあったりしないでしょうか?

このあたりもDependencyで調査済みですね・・・特に足りていないものはありませんでした。

投稿2024/02/19 23:52

minahiro1989

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問