問題タブ [dcom]

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 に答える
19541 参照

c# - Office オートメーションの DCOM エラー

SQL Server データベースからデータを取得し、そのデータを含む Word ドキュメントを生成する C# プログラムを開発しました。Windows Server 2003 ボックスで SSIS ジョブの一部として実行するようにプログラムをセットアップしました。プログラムは、管理者権限を持たないユーザー SQLSVC として実行されます。SQLSVC としてログインしてプログラムを実行すると、正しく実行されます。ただし、プログラムが SSIS ジョブとして自動的に実行されると、次のコード行でフリーズします。

プロセスを強制終了すると、次のエラー メッセージが生成されます。

私が把握できる限り、問題は DCOM 権限にあります。dcomcnfg を使用して、可能なすべての DCOM 権限をユーザー SQLSVC に追加しましたが、これは役に立ちませんでした。他に考えられる解決策はありますか?

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

windows - この奇妙な32ビット/64ビット相互運用ソリューションはどのように機能しますか?

私は現在、数年前にアウトソーシングしたソフトウェアを保守していますが、それは十分に文書化されていません。この部分は、サードパーティのアプリケーションで使用するためのCOMサーバーであり、必要なすべての展開を行うインストーラーです。

32ビットDLLとしてコンパイルされ、32ビットアプリケーションから使用することを目的としたコアがあります。また、64ビットDLLとしてコンパイルされ、64ビットアプリケーションからの使用を目的としたシムもあります。シムはCoCreateInstance()を呼び出してコアをインスタンス化し、呼び出しをコアにリダイレクトします。コアは、他の32ビットライブラリの膨大なセットに依存しています。

32ビットコアは、通常のin-procサーバーとまったく同じように登録されます。HKCR\ CLSIDの下に、コアクラスIDとInprocServer32の下のライブラリへのパスを含むエントリがあります。64ビットシムも同じ方法で登録され、64ビットシムにアプリケーションIDが導入されます。これはHKCR \ CLSIDの下に追加され、DCOMにも登録されます。DCOMコンソールにそのアプリケーションIDのエントリがあります。

現在、DCOM登録は奇妙に見えます。シムがコアではなくDCOMに登録されるのはなぜですか?32ビットコアをDCOMに登録して、別のプロセスでインスタンス化し、64ビットコンシューマーから保護する必要があると思います。しかし、どうやらそれは現在行われているように動作します。32ビットコアではなく64ビットシムをDCOMに登録する意味は何ですか?

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

windows - DLL を別のプロセスにロードするように DCOM を構成するにはどうすればよいですか?

既存のネイティブ C++ ATL インプロセス COM サーバーを強制的に別のプロセスにしようとしています。COM サーバーを変更せずに、DCOM がこれを実行してくれることを願っています。

通常のレジストリ設定から始めました。HKCR\CLSID{classId} エントリと、.dll ファイルへのパスを指定する InProcServer32 キーがあります。

アプリケーション ID (GUID) を生成し、あちこちに追加しました。具体的には、アプリケーション ID と等しい HKCR\CLSID{classId} の下に文字列値「AppId」を追加しました。また、HKCR\AppId{applicationId} キーと、空の文字列に等しい文字列値「DllSurrogate」を追加しました。COM サーバーをデフォルトのシステム提供のサロゲートに強制するには、これで十分だと思いました。

DCOM アプリケーションが DCOM 構成コンソールに表示されます。CoCreateInstance()ただし、またはを呼び出しCoGetClassObject()てクラスIDを指定すると、CLSCTX_LOCAL_SERVER「クラスが登録されていません」が返されます。私は何を間違っていますか?

UPD: 解決済み。実行した手順は、何らかの理由で InProcServer32 キーの下に同じパスを持つ間違ったクラス ID のレジストリを編集していたことを除いて、それを機能させるのに十分でした-おそらくそれは COM 地獄の問題でした.

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

windows - インプロセス サーバーを別のプロセスでホストするには、COM+ または DCOM のどちらを選択しますか?

32 ビット ネイティブ C++ ATL インプロセス COM コンポーネントから 64 ビット COM コンポーネント コンシューマをシールドする必要があります。

COM+ と DCOM の両方が、別のプロセスでインプロセス コンポーネントをホストし、マーシャリングを実行できるように思われるため、私とコンシューマ アプリケーションの両方がそれを気にせず、インプロセス コンポーネントを変更する必要さえありません。全て。私は両方を試しました.COM+アプリケーションまたはDCOMアプリケーションをそれぞれセットアップするためにハンマーを最初に使用した後、両方とも「正常に動作する」ようです.

展開と顧客での問題診断の点で最適なソリューションが必要です。COM+ と DCOM のどちらを選択しますか?

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

dcom - DCOM の何が問題になっていますか?

DCOM に対して多くの敵意があるようで、その理由が知りたいです。まだ C++ を使用して Win32 SKD を作成している企業にとって、現在または将来の開発で DCOM を使用しない本当の理由はありますか? Windows の将来のバージョンではサポートされないのでしょうか? 壊れやすく、頻繁に機能しませんか? 他のテクノロジーに比べて実装が複雑すぎますか? どうしたんだ?

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

c# - リモート COM サーバーのインスタンス化

プログラムを起動して使用するための COM インターフェイスがあります。これは、ローカルマシンでうまく機能します。他のソフトウェアをインストールしたり、プログラムを変更したりせずに、ネットワーク経由でそのプログラムを別のマシンで起動する可能性はありますか?

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

c++ - DCOM CoCreateInstanceEx E_ACCESSDENIED

私は 2 台の PC で作業しており、どちらも Windows XP を実行しています。どちらも、DCOM インターフェイスに登録された同じアプリケーションを持っています。今、あるコンピューターから別のコンピューターからプログラムを起動しようとしています。

最初に CoInitializeSecurity を呼び出し、その後 CoCreateInstanceEx を呼び出しましたが、結果は E_ACCESSDENIED です。

誰でもアクセスできるように dcomcnfg も実行しましたが、役に立ちませんでした。

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

windows - 「ゲストのみ」の共有/セキュリティ モデルをプログラムで検出する

最新の Windows では、ローカル ユーザーとしてネットワーク ログインすると、実際にはゲストとしてのみ認証されるように既定の構成が行われます (この動作の詳細については、http://technet.microsoft.comで説明されています)。 /en-us/library/cc786449(WS.10).aspx )

私のプログラムが DCOM 経由でこの種のサーバー上の WMI にアクセスしようとすると、おそらくゲスト ユーザーが WMI への接続を許可されていないため、「アクセスが拒否されました」というエラーが表示されます。

このエラーを、間違ったパスワードや存在しないユーザー名など、他の種類のアクセス拒否エラーと区別して、問題を解決するために必要なことをユーザーに説明できるようにしたいと思います。

私の質問は、そのようなサーバーを検出するにはどうすればよいかということです。ゲストがアクティブ化できる COM コンポーネントがいくつかあれば、それでよいと考えています --- そのようなコンポーネントをアクティブ化しようとすると、ログイン資格情報が正しかったことがわかります。しかし、そのような具体的なコンポーネントは考えられません。

誰かそのようなコンポーネントを知っていますか?または、この状況を診断する他の方法はありますか?

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

java - Java<->DCOM 通信における DLL/TLB

いくつかのクローズド ソース アプリケーションの DCOM サーバーと通信する OpenOffice アドオンを (Java で) 作成する必要があります。主な問題は、サーバーの Interfaces に関するドキュメントがないことです。

私が持っているのは、アプリケーション用の VB/C++ SDK キットだけです。SDK には、dll のライブラリと一連の *.tlb ファイルが含まれています。SDK のドキュメントには情報があります。Java を使用できますが、例はまったくありません。提供された例を読みましたが、DCOM とのすべての通信がこの dll を通過するようです。

そのような dll/tlb 関数定義を Java に直接インポートし、dll をバイパスして DCOM と通信する方法はありますか、それとも C++ ラッパー (dll) を作成する必要がありますか? それを行う最良の方法は何ですか?

どんなヒントでも大歓迎です。