問題タブ [regasm]
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# - VC ++からのCOMを介したC#オブジェクトのインスタンス化のクラスが登録されていないエラー
VC ++プロジェクトで、C#プロジェクト内に含まれるC#クラスのインスタンスを(COM経由で)作成しようとしています。
事実
- C#プロジェクトとC ++プロジェクトはどちらも、.NET4.0を使用してコンパイルされています。
- C#.dllはregasm / codebase "CSharpProjectName.dll" "を使用して登録されており、Windowsコマンドプロンプトで「タイプが正常に登録されました」と報告されます。
- C ++プロジェクトで、C#プロジェクトにクラスのインスタンスを作成しようとしましたが、HRESULTが0x80040154になりました-クラスが登録されていません
これは、C#.dllから.NETオブジェクトのインスタンスを作成する試みの例です。私がインスタンス化しようとしている具体的なクラスはEmployeeと呼ばれ、質問を簡単に提示するために、IPersonインターフェイスを実装しています。
「regasm/codebase」を使用してc#.dllを登録し、レジストリにキーが存在することを確認したのに、「クラスが登録されていません」というエラーが表示されるのはなぜですか。
どんな助けでも大歓迎です。ありがとう!
c# - RegAsm dll タイプが登録されていません
RegAsm を使用して .dll を登録しようとしています。.NET 2.0 dll です。すべてのクラスは public で、ComVisible は true です。まだ RA0000 : No types were registered エラーが発生します。以下はコードとアセンブリ情報です。どんな助けでも素晴らしいでしょう、ありがとう!
STARTelnet.cs
AssemblyInfo.cs
.net - RegAsm dll .net2.0 ~ .net4.0
.Net2.0 の regasm を使用して正常に登録する dll がありますが、.NET4.0 の regasm に登録しようとすると、「ファイルまたはアセンブリ ' FILENAMEHERE ' またはその依存関係の 1 つを読み込めませんでした。操作はありません。 (HRESULT からの例外: 0x8013515 コードとアセンブリは以下のとおりです)
STARTelnet.cs
AssemblyInfo.cs
com - Regasm が ProgId を HKEY_CURRENT_USER に入れるのはなぜですか?
ソフトウェアを (Wix) インストールしたい 2 つの仮想マシンがあります。1 つは Windows XP SP2 で、もう 1 つは Windows XP SP1 です。どちらもドメインを使用しておらず、どちらも管理者権限を持つローカル ユーザー管理者を持っています。
RegAsm.exe を実行して MyApp.dll を SP3 のマシンに登録すると、ProgId が次のフォルダーに配置されます。
HKEY_CLASSES_ROOT\MyAppProgId
HKEY_LOCAL_MACHINE\Software\Classes\MyAppProgId
一方、SP2 マシンで実行すると、次のフォルダーに配置されます。
HKEY_CLASSES_ROOT\MyAppProgId
HKEY_CURRENT_USER\Software\Classes\MyAppProgId
サービスから MyApp.dll を読み込もうとしているときに、これを見つけました。RegAsm.exe と Heat.exe から生成されたレジストリ ファイルは、どちらも HKEY_CLASSES_ROOT を更新しているようです。
誰がこれを引き起こす可能性があるか知っていますか?
編集: HKCR の代わりに HKEY_LOCAL_MACHINE に直接書き込むことで、これを回避することになりました。これには、生成された .reg ファイルまたは .wxs ファイルを手動で編集することが含まれていました。
c# - RegAsm は実際に何をしますか? ファイルはどこにコピーされますか?
spicIE に基づく IE 用のプラグインがあります。目的は、いくつかの外部デバイスに接続することです。
これらの外部デバイスに接続するために、別の会社が独自のトークンと DLL を開発しました。トークンによる認証を行うには、いくつかの ActiveX と DLL が必要です。
問題は、IE 用に開発したプラグインの最終部分に install.bat ファイルがあり、RegAsm を実行して DLL を登録し、その後プラグイン (またはその変更) を IE で表示できることです。
IE からプラグインを実行すると、認証に必要な DLL (x.dll という名前) がコードで見つかりません。登録された DLL はどこにコピーされますか? 本当にコピペ?プラグインの DLL が存在するフォルダーに x.dll が必要です。
c++ - 1つのC++クライアントが新しいCOM登録済みの.NET.dllでロードに失敗し、別のクライアントが機能します
顧客がCOM経由でアクセスする古いC/C++.dllがあります。
古い.dllをi.NETで記述された新しい.dllに置き換えようとしました。
お客様はクライアントを再コンパイルできないため、古い.dllをCOMの登録解除/新規登録(zippy32 / regasmを使用)するだけで置き換えることができることが重要です。
古いものと同じCOMインターフェイスで.NET.dllを構築したと信じています。GUID、名前、dispidなどはすべて一致します。独自のC++テストアプリケーションを作成することでこれを確認しました。古い.dllの登録を解除したり、新しい.dllを登録したりしても、引き続き機能します。
問題は、顧客のクライアントが起動に失敗することです。
不思議なことに、古い.dllを登録したままにしておくと(たとえば、両方の.dllが登録されている場合)、機能します。お客様のアプリケーションが起動し、新しい.dllのメソッドを呼び出します。ただし、古い.dllの登録を解除するとすぐに、アプリケーションの再起動に失敗します。
新しい.dllを登録するさまざまな方法を試しました。/ codebaseオプション、/tblなどでregasmを使用します。
OLE / COMビューアーで調べると、新しい.dllと古い.dllの間にいくつかの小さな違いがあります。たとえば、タイプライブラリの「名前」が異なります。しかし、私たち自身のC ++テストクライアントはどちらかの.dllで動作するので、COMインターフェイスは十分に似ていると思いますか?
どうか、誰かアイデアがありますか?別のクライアントが失敗したときに、1つのC ++クライアントが新しい.dllをロードすることはどのように可能ですか?古い.dllを新しいものと並行して登録したままにすると、両方が機能するのはなぜですか?2つのC++クライアントの動作が異なる理由について何か説明はありますか?
更新:クライアントのエラーメッセージは次のとおりです。
「実行中に失敗しました:CLSIDFromProgID。[myDll].dllが登録されているかどうかを確認してください。」
よろしくPT
com - WiXで.regファイルを使用してDLLを登録する
質問の背景
私は現在、COMで公開されている.NET DLLをユーザーのシステムに登録する必要がある、作業中の新しいプロジェクトを配布する手段をまとめようとしています。WiXを初めて使用する場合は、それに移行します。このため、私は物事をできるだけシンプルに保つようにしています。
問題
DLL登録の大きな問題は、regasmがInProcServer32キーのデフォルト値を「mscoree.dll」に設定することですが、DLLへのフルパスが使用されている場合にのみ、DLLがインスタンス化されているように見えます(例:「C:\ Windows \」)。 SysWow64 \ mscoree.dll "
現在、セットアッププロジェクト(WiXの使用を中止したい)にカスタムアクションがあり、SearchPath APIを呼び出してmscoree.dllへのフルパスを検索し、デフォルト値をフルパスで上書きして、DLLができるようにします。問題なくインスタンス化できます。
提案された解決策/質問
私はWiXを初めて使用するので、CLSIDツリーに入るのに必要なすべての情報を含む.regファイルを準備し、WiXにそれを何らかの方法で実行させるというアイデアを思いつきました。
私の質問は:
- この方法でDLLを登録することによる固有の欠陥はありますか?
- 私がここで回避策を見つけようとしている主な理由はmscoree.dllの問題ですが、WiXでこれを行うためのネイティブな手段はありますか?
.net - .Net4 RegAsm.exe で .Net2 dll の RegAsm を実行できますか?
.Net4 RegAsm.exe を使用して .NET 2 dll に RegAsm を実行できますか?
私のマシンには .NET 4 しかインストールされておらず、.NET 2 ファイルに対して RegAsm を実行する必要があります。
c# - DLL が登録されているか実行されているかを確認するにはどうすればよいですか?
C# VS2010 .NET4 で開発している IE アドオンがあります。DLL が登録される (つまり、インストールされる) と、メイン コンストラクターが実行され、そこから、その時点でビジネスを実行していない多くのコードが実行されるようです。このコードが実行されるのを避けることができるように、DLL が登録中か実際に実行中かを判断する方法はありますか?
RegAsm経由で登録されます
前もって感謝します!
regasm - regasm レジストリ エラー
私はこれを入力します:
regasm COMTest.dll /tlb:COMTest.tlb /codebase COMTest
そして、次のエラーが表示されます。
エクスポートされたタイプ ライブラリの登録中にエラーが発生しました: OLE レジストリへのアクセス中にエラーが発生しました。(HRESULT からの例外: 0x8002801C (TYPE_E_REGISTRYACCESS))
それはどういう意味ですか、どうすれば修正できますか?