問題タブ [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.
java - Java (DCOM) を使用してリモートで COM サーバー (EXE) にアクセスする
COM オブジェクトへのリモート アクセスについて質問があります。現在、JACOB を使用してカスタム COM サーバー (exe) に接続していますが、非常にうまく機能しています。ただし、Java コードを COM サーバーから分離し、別のマシンに配置しようとしています。JACOB は DCOM をサポートしていません。それで、com4jでこれが可能かどうか知りたかったのですか?もしそうなら、あなたはいくつかのリンクなどを指摘できますか?
また、[コンポーネント サービス] > [DCOM+ 構成] を使用して COM サーバーのプロパティにアクセスすると、[場所] タブのオプション [次のコンピューターでアプリケーションを実行] は何を意味しますか? 選択したコンピュータには、COM サーバー (exe) もインストールされている必要があるということですか? これは冗長に思えます。
最後に、私が達成しようとしている機能を可能にする無料のオープン ソース ライブラリは他にありますか?
お時間をいただきありがとうございます。
security - WMI 経由でリモート システムにクエリを実行すると、非管理者のアクセスが拒否されたことが返される
ローカルで正常に実行される単純な WMI クエリがありますが、リモート システムにクエリを実行すると、アクセス拒否エラーが発生します。ローカル ユーザーを管理者グループのメンバーとしてリモート システムに追加すると、クエリは期待どおりに機能しますが、そのユーザーをそのグループのメンバーにしたくありません。
私はすでに次のことを試しましたが、残念ながらこれまでのところ成功していません:
- ファイアウォールの RemoteAdmin を有効にしました (netsh firewall set service RemoteAdmin enable)
- wmimgmt.msc を介して、WMI セキュリティ設定 (ルート名前空間の場合、および設定が照会している名前空間 root/cimv2 に正しく伝達されることも確認しました) に可能なすべてのアクセス権を持つユーザーを追加しました。
- DCOM COM セキュリティでユーザーのリモート アクセスを有効にしました
クエリを実行するたびに同じエラーが表示されますが、見落としているものはありますか?
c# - AutoIT を使用してリモート ウィンドウを自動化する
C# アプリケーションで AutoIT の COM インターフェイスを使用して、リモート マシンのウィンドウを自動化したいと考えています。次のようなコードがあります。
問題は、オートメーションがリモート マシンのウィンドウを認識していないように見えることです。私が間違っていることはありますか?これは可能ですか?
delphi - Delphi COM EXE とスレッド化
そこにいるCOM / DCOMの専門家に確認したいだけです...
サーバー上で実行されている Delphi COM EXE があり(スレッドはシングル アパートメントです)、同じ EXE の別のコピーが同じサーバー上で起動します(デュアル コアを備えた 2 つのプロセッサを搭載したサーバーで、タスク マネージャは 4 つの個別のグラフを表示します) ) 交互に待機しますか、それとも別々のコアで実行しますか?
と書いてある記事をどこかで見つけました
「2 つのクライアントが同じオブジェクトを使用する必要がある場合は、交代で使用する必要があります。このスレッド モデルでは、インスタンス データは安全です。グローバル データは、クリティカル セクションまたはその他の形式のシリアライゼーションを使用して保護する必要があります。もちろん、スレッドのローカル変数は複数の呼び出しで信頼できます。」
c# - Server Word 自動化のアクセス許可 (いくつかの回答といくつかの質問)
Word オートメーションを使用して、Word 文書のページ数をカウントしようとしています。これまでのところ、これらのエラーに直面しています:
Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.
ドキュメントを開くときに Word が停止しました。
現時点での私の解決策とこれまでに行った手順は次のとおりです。
レジストリ キー
[HKEY_CLASSES_ROOT\AppID\WINWORD.EXE]
を から{A86A40B3-0008-4D41-975C-BB586C7121E3}
に変更します{00020906-0000-0000-C000-000000000046}
。DCOM
DCOMCNFG.EXE
構成で、次の変更を行いました。appID「{A86A40B3-0008-4D41-975C-BB586C7121E3}」の下に表示されている「Microsoft Word アプリケーション」で、ユーザーに
iusr_<MACHINE_NAME>
ローカルランチ権限 (のみ) を与え、ID を「起動ユーザー」に設定しました。「Microsoft Word ドキュメント」とも呼ばれる「Microsoft Office Word 97 - 2003 ドキュメント」(おそらく Word のバージョンによって異なります) で、iusr と iwam の両方に完全な起動とアクセス許可を与え、認証レベルを「なし」に設定し、起動を設定しました。ユーザーを自分の管理者ユーザーに。
セクション「2-b」の 3 つのモッドすべての組み合わせにより、最終的にすべての試練が機能し、現在機能しています。起動に自分のユーザーを使用することは、ドキュメントを開くときに単語がスタックすることへの対応として行われました。認証をデフォルトに戻すと、エラー「1」が発生します。起動ユーザーを「起動ユーザー」に戻すと、エラー「2」が発生します。
現在の状況では、すべてが機能していますが、ユーザーがログオンしてマシンでアクティブになっている場合のみであり、ログオンする必要がある自分のユーザーを使用する必要があり、認証がに設定されているという事実に興奮していませんなし。
これを機能させるために何日も苦労している人々への回答としてこれを書いています。できれば、セキュリティを改善する方法、つまり起動ユーザーを削除して認証を元に戻し、24時間年中無休でログオンしない方法についての回答を得たいと思っています。本番マシン (サイトの起動時)。
開発マシンの仕様:
Windows XP Pro 32bit
IIS 5.1
Classic ASP Website
COM+ 自動化するC#オブジェクト。
c# - COMメソッド呼び出しはC#、VB.NETでは失敗しますが、Pythonでは機能します
使用しようとしているCOMライブラリに問題があります。特定のメソッドを呼び出して渡すと、ArgumentExceptionが発生しnull
ます。Nothing
これは、Visual Studio 2008の「COM」リストからライブラリ参照を追加したC#プロジェクトとVB.NETプロジェクト(を使用してメソッドを呼び出す)の両方で発生します。Pythonでこれと同じメソッドを呼び出すと、None
、メソッドはエラーなしで期待どおりに機能します。PythonはDCOMを介してCOMライブラリと対話することを理解しています(そして、それが何を意味するかについては最も曖昧な概念しかありません)が、C#/VB.NETプロジェクトでCOMライブラリを参照するときにCOMライブラリを直接使用している可能性があります。COMライブラリに到達する前に、渡したパラメータが台無しになるようなことが起こっている可能性がありますか?ここで何が起こっているのかわかりません。最近、COMライブラリを新しいバージョンに更新したので、どこかでバージョンの競合が発生し、例外が発生しているのではないかと思いました。C#およびVB.NETプロジェクトからCOMライブラリへのすべての参照を削除し、すべてbin
とobj
ディレクトリを削除して、参照を再度追加しました。これにより、Interop.MyCOMLibrary.dllファイルが次のように表示されます。obj
私が見ていた古い日付の代わりに今日の日付を持っていること。
私がCOMライブラリについて持っている唯一のドキュメントは、この方法を次のように説明しています。
Variant
現在、パラメータに関する問題を探し回っています。
編集:そのためType.Missing
、他のソリューションはエラーなしでそのメソッド呼び出しを通過するために機能しますが、そのメソッドから返されたアイテムの特定の文字列プロパティを読み取ろうとすると、次のようになります。
System.Runtime.InteropServices.COMException:アイテムが存在しません。
これはPythonで機能したが、C#で例外をスローしている別の例であるため、DCOM対COMの奇妙さを推測しています。または、MSTestを使用してテストしているため、これはスレッドの問題である可能性があります。
c# - C# .NET から強制的に COM サーバー オブジェクトの割り当てを解除する方法
特定の条件が失敗した場合、またはオブジェクトが部分的に構築された場合に、C# .NET から強制的に COM サーバー オブジェクトの割り当てを解除する方法を教えてください。
問題は、DCOM メカニズムを使用してその COM サーバーを使用していることです。最悪の場合、オブジェクトが完全に作成されておらず、障害が発生してからアプリケーションを終了しようとしても、COM オブジェクトはまだメモリ内にあります (COM+ アプリケーション コンポーネント サービスに示されています)。制限を超えると、メモリ リークやクラッシュが発生します。ただし、管理可能な量の障害が発生した場合、ある時点で削除されます。
サンプル:- Calculator.App objApp = new Calculator.App();
if( !obj.CanBeUsed() ) { //COM オブジェクト objApp の割り当てを解除する方法 }
注: Garbase Collector がヒープ メモリから強制的に割り当てを解除するために使用するメソッド GC.Collect() があります。この方法を使用できるか、.NET franework がこの特定のケースに対して別の解決策を提供しているかどうか?
c# - C#からDCOMオブジェクトを呼び出す方法は?
私は CLSID を持っており、これを別のサーバー (つまり DCS ) でインスタンス化する必要がありますが、私の作業マシンは (つまり MWS ) です。
さて、次を使用すると:
次に、「COM ターゲットは IDispatch を実装していません」というエラーが表示されます。わかりました。おそらく COM ターゲット オブジェクトに IDispatch がないため、失敗します。
VS でその COM DLL の参照を追加すると、VS は相互運用アセンブリを生成し、すべてが通常の .net オブジェクト作成のように機能しますが、その場合、オブジェクトは実際にはローカル マシンで生成されます (MWS pc) 私が望むものをサーバーに入れません。
どうすればこの状況に対処できますか?
前もって感謝します。
excel - ユーザーがログオフすると、対話型ユーザーによる Excel COM オートメーションが機能しなくなる
Excel 2007 COM オートメーションを使用して一部の xls ファイルを変換するサーバー アプリを開発しました。独自のユーザーで実行されている Windows Datacenter インスタンスでサービスとして開始され、機能させるには DCOM セキュリティ設定 (「対話型ユーザーとして起動」) を変更する必要がありました。
問題は、(RDP 経由で) ログオフすると、動作しなくなることです。ログオンすると、再び機能します。
誰かが同じ問題を抱えていますか?
.net - COM+: サーバーとクライアント部分のマネージ コードには DCOM プロトコルが必要ですか?
COM+ 1.0 環境で多くのソリューションを開発しました。COM+ 1.0 でホストされ、分散作業用のプロトコルが DCOM である VB6 クライアントに公開された古い VB6 DLL。COM+ 1.0 でホストされるマネージ コード COM をレガシー VB6 クライアントと共に開発し、すべて動作しました。
しかし、ここでは、マネージ コードの通信をクライアント部分とサーバー部分の両方に実装する必要があります。
ホストされた COM および .NET クライアントでマネージ コードを使用して COM+ 1.5 を使用したいと考えています。唯一の疑問は、COM+ がトランスポート アプリケーション プロトコルとして DCOM を再び使用するかどうかです。
より明確にするために: サーバーとクライアント部分のマネージ コードには DCOM プロトコルが必要ですか?