問題タブ [clsid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
4576 参照

com - CLSIDFromProgID は成功しますが、CreateInstace は失敗します! なんで?

COM オブジェクトのインスタンスを作成しようとしています。インターフェイスを実装するクラス名があり、CLSIDFromProgID() を使用して CLSID を取得します。だから私はCLSIDを取得しているので、これからはすべてがうまくいくはずだと思っていました. ただし、CreateInstance を呼び出して CLSID を渡すと、「クラスが登録されていません」というエラーが表示されます。また、一部のコンピューターでのみこのエラーが発生します。複数のコンピューターでエラーなしで実行されます。問題がどこにあるのかわかりません。レジストリが汚れていますか? ここで何が起こっているか知っている人はいますか?ご協力いただきありがとうございます!

これが .NET COM クラスであることを付け加えたいと思います。適切なエントリはレジストリにあり、DLL は GAC にあります。

0 投票する
6 に答える
71899 参照

com - Windows 64 ビット レジストリと 32 ビット レジストリの比較

Windows x64 アーキテクチャでは、x86 と x64 アプリケーションの両方の実行をサポートするために、2 つの別個の/異なる Windows レジストリ セットがあると聞きました.1 つは x86 アプリケーションがアクセスし、もう 1 つは x64 アプリケーションがアクセスしますか? たとえば、COM がレジストリの x86 セットに CLSID を登録すると、x86/x64 ではレジストリのセットが異なるため、x64 アプリケーションは CLSID によって COM コンポーネントにアクセスできなくなります。

それで、私の質問は、上記のサンプルの私の理解が正しいかどうかです? また、x64 アーキテクチャの 2 つの異なるレジストリ セットについて、このトピックを学習するためのドキュメントをさらに入手したいと考えています。(いろいろ調べましたが、有力な情報は見つかりませんでした。)

0 投票する
4 に答える
42444 参照

dll - CLSID を指定して DLL を見つける方法は?

マネージ DLL がアンマネージ DLL を呼び出す状況があります。アンマネージ DLL の CLSID はわかっていますが、その CLSID を格納しているバイナリ ファイルを特定する方法はありますか?

0 投票する
1 に答える
516 参照

com - XBAP は管理されていない c++ COM サーバーを使用し、サイド バイ サイド配置の問題

私は次の状況に直面しています: 管理されていない c++ COM サーバー (分離) を参照する単純な完全信頼 XBAP アプリケーションを作成しました。

展開後、XBAP アプリケーションが同じディレクトリに配置された COM サーバー dll を検出することを期待していますが、そうではありません。次のエラーが表示されます。

呼び出しのターゲットによって例外がスローされました。---> System.Runtime.InteropServices.COMException (0x80040154): CLSID {970599E0-2673-11D3-A8A8-00105AA943DF} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 次のエラーが原因で失敗しました: 80040154. at Generation888.Generation888.Simple (Int32 num1、Int32 num2)

XBAP がデプロイされたフォルダーに、適切な CLSID を含む DLL と XBAP マニフェストが含まれていることを確認しました

単純な C# Windows フォーム アプリケーションを作成し、同じ COM dll を参照すると、正常に動作します。

私の質問は、XBAP が Side-by-Side メカニズムをサポートしているかどうかです。

ありがとう

0 投票する
3 に答える
5297 参照

c# - HRESULT:0x80040154 CLSID {}のCOMオブジェクトが無効であるか、登録されていません

C#.NET1.1アプリケーションでCOMオブジェクトを使用しています。COMオブジェクトがクライアントマシンに登録されていない場合、例外が発生します。

CLSID {}のCOMオブジェクトが無効であるか、登録されていません。」(HRESULT:0x80040154)

zippy32を使用してCOMオブジェクトを登録する方法を知っています。要件は、登録されていないCOMオブジェクトを識別することです。COMオブジェクトの名前をハードコーディングするのではなく、COM Exception/HResultを使用して動的に識別します。何か案は?

0 投票する
1 に答える
3175 参照

c# - Visual c# Express Edition - Acrobat pdf リーダーが動作しない

Visual C# 2008 Express Edition プロジェクトで Acrobat Inter Application Communication (IAC) を使用して、C# アプリケーション内で PDF ドキュメントを開こうとしています。
次のコードを実行すると、例外が発生します。

例外は、特定の CLSID の COM クラス ファクトリがエラー 80040154 で失敗したことを報告します。MSDN で winerror.h のエラー コードを調べると、エラーは登録されていないクラスに関連しています。
regsvr32 を使用して Interop.Acrobat.dll を登録しようとしましたが、これは機能しません (エントリ ポイントの DllRegisterServer が見つかりません)。
Acrobat 9 SDK に付属するサンプル C# プロジェクトを試しました (BasicIacCS - BasicIacCS.suo というビジュアル スタジオ プロジェクトがあり、これはエラーなしで c# Express にインポートされますが、同じ例外で失敗します)。


私は根本的な間違いを犯していますか?(私は Windows/.NET プログラミングは初めてです)
これはエクスプレス エディションで可能ですか、それとも Visual Studio にアップグレードする必要がありますか?


問題をさらに詳しく調べると、アプリケーション (.exe ファイル) の ILDASM を実行すると、問題の CLSID が利用可能になります。これは、アクセスしようとしている AcroPDDoc クラスの CLSID です。このクラスとそれに関連付けられている CLSID がレジストリにありません。フルバージョンではなく、Acrobat Reader のみがインストールされています。COM インターフェイスにアクセスするには、Acrobat のフルバージョンが必要ですか? (システムにはAcrord32.dllしかなく、Acrobat.dllはありません)。別の Vista マシンで同じプログラムを試し、Arobat リーダーをアンインストール/再インストールしましたが、結果は同じでした。

0 投票する
3 に答える
685 参照

c# - COM クラス ファクトリ エラー

COM オブジェクトを操作しようとすると、ワークステーションで次のエラーが発生します。

タイプ 'System.Runtime.InteropServices.COMException' の未処理の例外が CarteGraphInterface.exe で発生しました

追加情報: 次のエラーが原因で、CLSID {3963F0F8-6B0C-4A65-90F4-F60168044014} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80040154。

SOに関するいくつかの 質問を読みましたが、どれも役に立ちませんでした。その ID は、レジストリのどこにもリストされていません。追加する必要がありますか?

更新:もう少し情報。VS2008 で [参照の追加...] を選択すると、そこにオブジェクトが一覧表示され (最初に見つけた方法です)、ソースは *.exe として一覧表示されます。regsrv32 は機能しませんでした。

0 投票する
2 に答える
7918 参照

windows - DLL ファイルの CLSID を取得していますか?

ユーザー定義のコンテキスト メニュー エントリをレジストリに追加および削除する小さなアプリを作成したいと考えています。これを行うには、何らかの方法で任意の DLL の CLSID を取得する必要があります。これにより、以前のエントリが存在する場合は、新しいエントリを作成する前にバックアップできるようになります。

どういうわけかこの魔法の番号を作成することができましたregsrv32が、私はその番号を自分で取得する方法を見つけられませんでした.

これよりも良いものがあることを願っています:

  1. DLL 名のレジストリをスキャンしています
  2. 見つからない場合は、登録し、再度スキャンしてから、再度登録解除します

DLL の名前が変更されている場合、問題が発生する可能性があります。

0 投票する
2 に答える
1436 参照

java - ProgID とファイル拡張子の関係

JACOB プロジェクト (JAva COm Bridge) を使用したプログラムに取り組んでいます。

開くファイルがあり、名前全体が渡されます (例: c:\test\test.xls)。JACOB が新しい ActiveXComponent を作成するには、ProgID または CLSID を渡す必要があります。(Excel.Application や Word.Application などですが、MS 領域の外には Autocad.Application などもあります)

では、ファイル拡張子または MIME タイプを特定の ProgID または CLSID に関連付けるにはどうすればよいでしょうか。Win32_ProgIDSpecification に参加できる別のデータベースはありますか? Win32_ProgIDSpecification にはすべての ProgID があります。

0 投票する
3 に答える
162 参照

com - 新しい COM サーバーの登録に関する通知を取得する

レジストリ (CLSID) に追加された (regsvr32 を介して) 新しく登録された、または未登録の COM サーバーを識別する方法を見つけようとしています。使用できるコールバック関数はありますか? 私は本当にレジストリをポーリングしたくありません...