問題タブ [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.
c# - C# で Powershell Get-Members を複製する
Get-Members
PowerShell には、コマンドレットを介して CLSID GUID を指定して、オブジェクトのメソッドとプロパティを列挙する機能があります。例えば:
これにより、次の出力が得られます。PowerShell 出力
C# 内で同じメソッドを使用すると、異なる結果が得られます。次のコードを使用して、オブジェクトのメソッド、プロパティ、およびメンバーを列挙しています。
これにより、次の出力が得られます。C# 出力
なぜそれがそれほど大きな違いなのかについてのアイデア。PowerShell の出力は素晴らしいですが、C# でも同じことを行う必要があります...
編集 1: Get メソッドから BindingFlags.* を削除すると、出力は次のようになりますC# BindingFlags なし
c# - DCOM は、構成されたプロトコルのいずれかを使用してコンピューターと通信できませんでした
現在問題が発生しています。状況は次のとおりです。
目的は、serverA の dll を使用して serverB のデータベースに書き込むことです (SQL データベースではなく、RAIMA データベースです)。
serverB の Web サービスは、次のスクリプトを実行します。
2 行目で、スクリプトは例外をスローします。
System.Runtime.InteropServices.COMException (0x800706BA): CLSID {03BD256F-6114-11D1-9E81-00A0C939AC09} を持つリモート コンポーネントの COM クラス ファクトリをマシン serverA から取得すると、次のエラーが原因で失敗しました: 800706ba serverA
使用する .exe に適切な DCOM アクセス (通常、WS アカウントには適切なアクセスがあります) を設定しましたが、彼の CLSID は {03BD2562-6114-11D1-9E81-00A0C939AC09} です。ファイアウォールはオフです。
そして、私が得たイベントビューアのserverAから:
DCOM は、構成されたプロトコルを使用してコンピューター ჸ൵蠀 と通信できませんでした。PID 0 () によって要求されます。
サーバー名が中国語の記号で書かれており、PIDが 0 であるように!
serverB から私はこれをイベントビューアーに持っています:
サーバーをアクティブ化しようとしたときに、DCOM がコンピューター serverA からエラー "2147746132" を受け取りました: {03BD256F-6114-11D1-9E81-00A0C939AC09}
これは理にかなっています...問題はserverAにあると思います。
何がうまくいかないのか、誰にも分かりますか?
dcom - System.Runtime.InteropServices.COMException (0x80040154): CLSID を持つリモート コンポーネントの COM クラス ファクトリを取得しています {..} エラー: 80040154
DCOM 経由でサード パーティのソフトウェアを制御する ASP.NET Core 3.1 WebApp があります。サードパーティのソフトウェアを新しいバージョンに更新するまで、それはうまくいきました。
もちろん、CSID ([スタート] - [コンポーネント サービス] - [コンピュータ] - [DCOM] にあります) を clsid "{2997C622-CCC7-4533-9B0B-06F28D5EEC12} (古いバージョン) "から clsid "{A9BB03A7-C8C3-492D-A2DF-35307DC438C5" に変更します。 (新しいバージョン) その後、例外が発生します: System.Runtime.InteropServices.COMException (0x80040154):マシン 127.0.0.1 から CLSID {A9BB03A7-C8C3-492D-A2DF-35307DC438C5} を持つリモート コンポーネントの COM クラス ファクトリを取得しています次のエラーが原因で失敗しました: 80040154 127.0.0.1。
C# WebApp を x86 アプリケーションとしてビルドすると、「System.BadImageFormatException: ファイルまたはアセンブリを読み込めませんでした」という別のエラー メッセージが表示されます。ソフトウェアが x64 ビット アプリケーションであるため、これは論理的です。(32 ビットはありません)。ここで、プロセッサ アーキテクチャの違いを避けるために、「Any CPU」から「x64」に設定しましたが、例外 80040154 は残ります。
Windows レジストリには、新しいソフトウェア バージョンからの CSID のエントリはありません。古いバージョンのコンピュータ\HKEY_CLASSES_ROOT\CLSID{2997C622-CCC7-4533-9B0B-06F28D5EEC12}についてのみ 、手動でエントリを作成しようとしました。それは例外なく実行されますが、アプリはハングアップします。
誰かが私の問題の解決策を知っていますか?