登録不要のCOMがWindows Server 2003で機能しない
-
05-07-2019 - |
質問
COMサーバーDLLとクライアントアプリケーションがWindows XPで登録なしで動作するために必要なマニフェストを作成しました。私はすべての種類の組み合わせ(登録の有無にかかわらず)をテストしましたが、すべての場合、クライアントアプリケーションはマニフェストが存在する場合はライブラリのサイドバイサイドバージョンを認識し、存在しない場合は登録されたものを認識します(またはCOMエラー登録がない場合)。 Windows XP開発マシンでテストし、ファイル(DLL、クライアントEXE、およびそれぞれ1つのマニフェスト)を同僚に渡しました。同僚は、自分のWindows XPマシンですべてを正常に実行しました。マニフェストは外部XMLファイルであり、埋め込みリソースではありません。ここまでは順調ですね。
ただし、ファイルをWindows Server 2003マシンにコピーすると、機能しません。サイレントエラーが発生しましたが、アプリケーションイベントログにアプリケーションエラーがあります(以下を参照)。 DLLの登録を解除してマニフェストを削除すると、同様のエラーが表示されます(コマンドプロンプトではサイレントですが、イベントログにアプリケーションエラーが表示されます)。登録を見つけるのに明らかに問題があります。弊社でアクセスできるすべてのWindows Server 2003マシンでこれを再現しました。 side-by-side / registration-free COMに関するMicrosoftのドキュメントによると、Windows XP以降、およびWindows Server 2003以降で動作するはずです。
明確にするために、同じクライアントは、同じCOM DLLの registered ( ie バージョン)の同じCOM DLLに対して、同じWindows Server 2003マシン上で完全に実行されます。登録不要のCOMに使用しようとしているのと同じログイン資格情報。つまり、登録不要のCOMの問題を装った固有の問題はありません。サーバーがレジストリにグローバルに登録されている場合、このクライアントとサーバーは正常に動作します。
さらに調査する方法についてのアイデアはありますか?私はWindows Serverの専門家ではありませんが、このサポートを有効にするために変更する必要があるポリシー設定はおそらくありますか?必要な変更を見つけることができれば、当社の技術サポート/インフラストラクチャの人々はおそらくそれをおそらく行うことはないでしょうが、彼らが圧倒されているので問題を研究するのに彼らに頼ることはできません。
問題が発生した場合(私はそうは思わないが、あなたは決して知らない)、DLLはDelphi 2007で書かれ、クライアントはVisual C ++で書かれている。
Event Type: Information Event Source: Application Error Event Category: (100) Event ID: 1004 Date: 5/2/2009 Time: 8:07:45 AM User: N/A Computer: ***server name**** Description: Reporting queued error: faulting application ***program name***.exe, version 0.0.0.0, faulting module ***program name***.exe, version 0.0.0.0, fault address 0x0002ac9e. For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
解決
探すべきことの1つは、exeに内部マニフェストがあるかどうかです。 XPでは、exeマニフェストの検索順序は外部で、次に内部です。 Server 2003以降では、順序は内部、外部の順になります。
他のヒント
Delphi 7で作成されたCOMサーバーで、COMサーバーが登録解除され、クライアントアプリケーションが制限されたユーザーアカウントで開始された場合、同様の問題が発生しました。 RegisterServer関数は明示的に呼び出されませんでした。
これが問題であるかどうかを確認するには、無制限の管理権限を持つアカウントでクライアントアプリケーションを実行してみてください。
MSDNは、Windows 2003では、無料のCOMサーバーの登録に関する問題は、システムイベントログの特定のセクションで詳しく説明する必要があると述べています。
登録不要のトラブルシューティングを行う場合 COMの問題、イベントビューアー Windows Server 2003はあなたの友達です。 Windows XPまたはWindows Server 2003の場合 構成エラーを検出します 通常、エラーメッセージボックスを表示します 使用しているアプリケーションのタイトル 起動してメッセージを含む "このアプリケーションは起動に失敗しました アプリケーション構成 間違っている。再インストール アプリケーションがこの問題を修正する可能性があります。私 これを見るときはいつでも 問題を再現するメッセージ Windows Server 2003、相談してください システムイベントログとイベントの検索 SideBySideソースから。理由 私はあなたが見ることをお勧めしません これらの場合のWindows XPイベントログは それは常に含まれます " Generate Activationなどのメッセージ [パス] [アプリケーションのコンテキストが失敗しました ファイル名]。マニフェスト。参照エラー メッセージ:操作が完了しました 成功しました"助けにはならない 問題を特定します。 http://msdn.microsoft.com/en-us/library/ ms973913.aspx#rfacomwalk_topic6
また、可能であれば、使用するマニフェストファイルのファイル名と内容をお知らせください。