問題タブ [dllregistration]
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.
.net - Delphi 7 - 登録不要の COM アクティベーション
Delphi クライアント (exe) と .NET COM dll があり、dll を登録せずに実行しようとしています。こちらの手順に従いましたが、私の Delphi クライアントは正常にコンパイルされます。ただし、私は Delphi の専門家ではなく、Deplhi でオブジェクトを使用する方法を理解できません。リンクされている Skype4COM.dll の例を取り上げると、Delphi 7 から dll とそのメソッドにアクセスするにはどうすればよいですか? 前もって感謝します。
dll - dllを登録しようとしましたが、エラーが発生しましたDllRegisterServerエントリポイントが見つかりませんでした
zippy32を使用して登録しようとしている.netアセンブリdllがありますが、次のエラーが発生します。
「dllはロードされましたが、DllRegisterServerエントリポイントが見つかりませんでした」
他のdllの登録中にもこのエラーが発生します。
windows-server-2008-r2 - Windows 2008 R2 で 32 ビット .DLL COM+ アプリケーションを登録する方法
同様の質問をすべて読みましたが、正確な問題が解決されていません。同様の推奨事項をすべて試しました。
Windows Server 2003 環境から、IIS 7.5 を実行する Windows Server 2008 R2 環境への移行を余儀なくされています。32 ビット DLL で COM オブジェクトを呼び出す Web アプリケーションがあります。COM オブジェクトは VB6 から作成されました。これが私がこれまでに行ったことです:
- IIS アプリケーション プールで 32 ビットを有効にしました。
- .DLL を登録しましたが、C:/windows/syswow64/regsvr32.exe を使用して依存する .DLL です。登録は成功しています。
- C:/windows/syswow64/regedit を使用して、.DLL とそのコンポーネントがレジストリにあることを確認しました。
- コンポーネント サービスで COM+ オブジェクトを作成し (syswow64/dcomcnfg を使用)、それらを開始しました。
- ロール「ユーザー」を作成し、それにグループ「Everyone」を追加しました。
アプリケーションを実行すると、Web ページがハングします。COM オブジェクトのログ ファイルで次のエラーを見つけることができます。
ActiveX コンポーネントはオブジェクト エラーを作成できません: [429]: CDataAdministrator::OpenCatalog
新しいサーバーと古いサーバーのセットアップを比較しました。古いサーバーでは DataAdministrator オブジェクト (DataAdministrator.CDataAdministrator) が DCOM Config の展開の下に表示されますが、新しいサーバーではそうではありません。そして、私はそれをそこに表示させることができないようです。
イベント履歴または IIS Web ログにエラーはありません。すべてが登録されているように見えますが、実行されません。指定したアカウントで実行されているタスク マネージャーで DLLHOST.EXE*32 を確認できます。
私はここで途方に暮れています....助けて?
dllregistration - dll 2003 80040005 エラー レジスタ
私はDLLを持っています(VB6で書かれています..)。ほとんどのマシンとインストールで正常に登録および実行されます。ただし、1 つのインストールは、Server 2003/R2/SP2 を実行する T/S (ターミナル サーバー) です。次のメッセージで失敗します。
C:\Program files\ApplicationPath\ModulesPath\dllname.DLL の DllRegisterServer が失敗しました。戻りコード: 0x80004005
パスにモジュールとその依存関係が存在するディレクトリがあることを確認しました。「アクセスを制限してこのプログラムを実行する」チェックボックスをオンにして、CMDプロンプトを管理者として実行するようにしました。
depends.exe を実行すると、IESHIMS.DLL と WER.DLL が見つからないというメッセージが表示されますが、別の 2003 Svr/R2/SP2 ボックスでも見つからず、登録して正常に動作します。
誰がどこで何を探すべきかについてのアイデアを持っていますか? また、稼働中のサーバーと稼働していないサーバーの間で、フォルダーのアクセス許可、ファイルの内容とバージョンなどを比較するのにも時間を費やしました。
visual-studio-2010 - エラー:file.OCXのサイドバイサイド構成情報にエラーが含まれています。アプリケーションを開始できませんでした
特定のマシンにocxを登録しようとすると、次のエラーが発生します。(Windows XP 32ビット)
エラー:「file.OCX」のサイドバイサイド構成情報にエラーが含まれています。アプリケーションの構成が正しくないため、このアプリケーションを起動できませんでした。アプリケーションを再インストールすると、この問題(14001)が修正される場合があります。
しかし、それは私のWindows732ビットと別のWindows764ビットマシンでは正常に動作します。
オペレーティングシステム以外に私が見ることができる唯一の違いは、2台のマシンにDelphi2009とMicrosoftVisualStudioがインストールされていることです。(私が読んだことから、Visual Studioはそれと関係があるかもしれません。)
このocxをMicrosoftVisualStudioのないマシンに正しく登録するにはどうすればよいですか?
ありがとう
PS
マニフェストのバージョンは、それが役立つ場合は1.0(ocxファイル内)です。
これがマニフェストです
com - tlbファイル以外のフォルダにdllをインストールすると、COM登録に失敗します:「自動化エラー:指定されたファイルが見つかりません」
Accessアプリケーション(MyAppと呼びます)が使用できるように、VB.NETで開発されたCOMコンポーネント(MyLibと呼びます)があります。そのためには、生成されたMyLib.dllファイルとMyLib.tlbファイルを使用してCOM登録を行う必要があります。両方のファイルをMyAppのフォルダーにインストールすると、すべてが正常に機能し、COM関数が正しく呼び出されます。ただし、dllを共通フォルダーにインストールすると、タイトルにエラーが表示されます。これを行う理由は、同じマシンに異なるバージョンのMyAppをインストールできるようにするためです。したがって、COMコンポーネントが変更されない場合は、もちろん、これらの異なるバージョン間でCOMコンポーネントを共有し、Windowsに参照カウントを実行させたいと考えています。
MyAppのインストールフォルダまたはMyLib.dllと同じ共通フォルダのどちらにMyLib.tlbファイルを配置する必要があるかわかりません。しかし、とにかく、私は両方の場所を試しました、そしてそれらはすべて同じエラーを出しました。MyLib。*をMyAppのフォルダーに入れた場合と、MyLib.dllを共通フォルダーに入れた場合のレジストリファイルを比較してみました。もちろん、HKCR \ Wow6432nodes \ CLSID {MYCLSID} \ InprocServer32で登録しようとしているクラスのCodeBaseを除いて、違いはわかりません。私が理解していないもう1つのことは、どちらの場合もHKCR \ Wow6432nodes \CLSID{MYCLSID}の下にTypeLibという名前のサブキーがないことです。
AccessアプリケーションでCOMリファレンスがどのように機能するか正確にはわかりません。間違っている場合は、訂正してください。誰かが私が間違ったことを教えてもらえますか?共有COMdllを登録する正しい方法は何ですか(dllとtlbの両方を共有フォルダーに入れるかどうかに関係なく)?ありがとう!
アップデート:
COM登録に関しては、WIXを使用してWindowsインストーラーを作成し、heat.exeを使用してdllファイルとtlbファイルから情報を収集しています。生成されたファイルには、Class、ProgID、TypeLib、およびRegistryタグの情報が含まれています。前述したように、WIX構成の観点から見ると、2つのケースの唯一の違いは、MyLib.dllファイルを配置する場所です(MyLib.tlbファイルをMyAppインストールフォルダーに配置するのが正しい方法だと思います。もう一度、修正してください。私が間違っている場合)、dllファイルとtlbファイルの両方をアプリケーションのインストールフォルダーに入れると、機能します。登録後のレジストリ構造は次のとおりです
まず、HKCR \ CLSID \ {MYCLSIDs}があり、それぞれが私のCOMクラスの1つを表しています。「InprocServer32」という名前のサブキーには、Assembly、Class、CodeBase、RuntimeVersion、threadingModelがあります。また、CodeBaseは、共通のファイルフォルダー(機能していない)またはMyAppのインストールフォルダー(機能している)のいずれかです。これは、dllを配置するさまざまな場所です。AccessはTypeLibのみを認識し、TypeLibから実際のdllへのリンクがあるはずなので、{MYCLSIDs}の下に別のサブキーTypeLibがあると思いましたが、どちらの場合もこのサブキーはありませんが、 2番目のケースはまだ機能しています。問題はありますか?
次に、HKLM \ Software \ Classes \ CLSID \ {MYCLSIDs}があります。このキーは、上記と同じ構造です。
第三に、HKCR \ {MYPROGIDs}、これらは私のクラスの単なるProgIDです
第4に、HKCR \ Typelib \ {LibID}には、tlbファイルからの情報が含まれています。このIDは、COMコンポーネントプロジェクトのアセンブリGUIDからのものです。
最後に、HKEY_CLASSES_ROOT \ Interface \ {InterfaceID}には、値{00020424-0000-0000-C000-000000000046}のProxyStubClsid32という名前のサブキーがあり、TypeLibという名前のサブキーと値は私のLibIDです。
唯一の違いは最初の項目のCodeBaseであるようです(私は間違っている可能性がありますが、それが私が見ているものです)。問題が発生した場合はお知らせください。ありがとう!
2回目の更新:
MyLib.dllを共有フォルダーにインストールした後、COM呼び出しが失敗します。しかし、SHARED_FOLDER\MyLib.dllのすべてのCodeBase値をINSTALLDIR\MyLib.dllに置き換え、MyLib.dllをINSTALLDIRにコピーすると、実際に機能します。逆に、MyLib.dllをINSTALLDIRにインストールした後(この場合はCOMが機能しています)、CodeBaseの値をINSTALLDIR\MyLib.dllからSHARED_FOLDER\MyLib.dllに変更し、SHARED_FOLDERにコピーします。今回は失敗します。ですから、それはまさに設置場所の問題であるように思われます。これは、私のCOMの理解とは正反対です。また、SHARED_FOLDERはインストーラーが作成するフォルダーにあるため、アクセス許可の問題はないと思います(間違っている可能性があります)。
com - WIX: COM dll を別のフォルダーにインストールすると COM 登録が失敗する
COM 登録を行うために、heat を使用して COM dll ファイルと tlb ファイル (VB.NET で開発された MyLib.* と呼びましょう) を収集しています。MyLib.dll と MyLib.tlb をアプリケーションのインストール フォルダ (INSTALLDIR) にインストールすると、すべてが正常に機能していました。ただし、異なるバージョンの SW を同じマシンにインストールできるようにしたいので、それらが同じバージョンの COM コンポーネントを使用している場合、dll のコピーは 1 つだけです (SW の各バージョンには独自のバージョンが必要だと思います)。 tlb、間違っていたら訂正してください) をインストールする必要があるため、MyLib.dll を別のフォルダー、具体的には PROGRAM_FILES\Common Files\SHARED_FOLDER_NAME にインストールしたいので、SW の 1 つのバージョンがアンインストールされると、MyLib.dll は削除されず、他のバージョンで引き続き使用できます。
しかし、ここで問題が発生します。このdllをこの別のフォルダーにインストールした後、COM登録が機能しなくなり、登録の失敗を示すCOM関数を呼び出しているときに指定されたファイルが見つからないと言い続けます。WIX インストーラー プロジェクトでは、MyLib.dll のこのフォルダー以外はすべて同じです。
インストール後のレジストリ構造は次のとおりです。
まず、HKCR\CLSID{MYCLSIDs} があり、それぞれが私の COM クラスの 1 つを表しています。「InprocServer32」という名前のサブキーには、Assembly、Class、CodeBase、RuntimeVersion、threadingModel があります。CodeBase は、共通ファイル フォルダー (動作していない) または MyApp のインストール フォルダー (動作中) のいずれかであり、これは dll を配置したさまざまな場所です。Access は TypeLib しか認識せず、TypeLib から実際の dll へのリンクがあるはずなので、{MYCLSIDs} の下に別のサブキー TypeLib があると思いましたが、どちらの場合も、このサブキーはありませんが、 2番目のケースはまだ機能しています。問題はありますか?
次に、HKLM\Software\Classes\CLSID{MYCLSIDs} があります。これらのキーは、もちろん上記と同じ構造です。
3 番目に、HKCR{MYPROGIDs}、これらは私のクラスの単なる ProgID です
4 番目に、tlb ファイルからの情報を含む HKCR\Typelib{LibID} で、この ID は COM コンポーネント プロジェクトのアセンブリ GUID から取得されます。
最後に、HKEY_CLASSES_ROOT\Interface{InterfaceID} には、値 {00020424-0000-0000-C000-000000000046} を持つ ProxyStubClsid32 という名前のサブキーがあり、TypeLib という名前のサブキーと値は私の LibID です。
前述したように、唯一の違いは、MyLib.dll の場所を格納する CodeBase です。それを確認するために、2 つのテストを行いました。MyLib.dll を共有フォルダーにインストールした後、COM の呼び出しに失敗しました。しかし、SHARED_FOLDER\MyLib.dll のすべての CodeBase 値を INSTALLDIR\MyLib.dll に置き換え、MyLib.dll を INSTALLDIR にコピーすると、実際に機能します。逆に、MyLib.dll を INSTALLDIR にインストールした後 (この場合、COM は動作しています)、CodeBase の値を INSTALLDIR\MyLib.dll から SHARED_FOLDER\MyLib.dll に変更し、SHARED_FOLDER にコピーを作成しますが、今回は失敗します。ということで、私のCOM理解とは逆に、まさに設置場所の問題のようです。また、インストーラーが作成するフォルダーにあるため、SHARED_FOLDER (間違っている可能性があります) のアクセス許可の問題はないと思います。
助けてください、ありがとう!
activex - installshield lightActiveXdllが登録されていません
VisualStudio2010と無料バージョンのInstallshieldを使用しています。アプリケーションには、Excelから呼び出されるActiveXコンポーネントが含まれています。[COM相互運用機能に登録]オプションは、プロジェクトのビルドプロパティページでオンになっています。XPマシンでインストールを実行すると、dllが登録されません。regasm / tlb:コマンドを手動で実行すると、アプリケーションは機能します。
質問:1。登録が実行されたことをinstallshieldログファイルで確認するにはどうすればよいですか?2.登録が失敗した場合、ログにはどのようなエラーメッセージが表示されますか?2. installshieldでは、dllに強い名前を付ける必要がありますか?(そうではありません)3。他にトラブルシューティングの提案はありますか?
前もって感謝します、
カリー
dll - VB6 dll によって参照される .net dll (com interop) を一元化する方法
私は VB6 プログラマーから要件を与えられました (はい、まだ存在します)。vb6 dll を使用する vb6 アプリケーションが存在します。この dll は、別の .net dll を使用する .net dll を使用するようになりました。今私の要件は、.net dll が vb dll と同じように機能することです。つまり、vb6 dll が登録されると、他のアプリケーションで使用でき、ロールアウト時に含める必要はありません (そう言われました)。他の vb6 アプリが使用できるように、.net dll を配置する方法はありますか。私が見たところ、これは、.net dll が vb6 exe と同じフォルダーにある場合にのみ機能します。
私はこれを読みました COMプログラムは、COM相互運用のために登録された.NET DLLをどのように見つけますか?
ありがとうございました
.net - InnoSetupでのCom+相互運用登録
セットアップの作成にはInnoSetupを使用しています。すべて正常に動作しますが、問題が発生します。.NETDLLを登録して、COM+からアクセスできるようにする方法です。.NETがそれをもたらすことは誰もが知っRegSvcs.exe
ているので、Inno Setupのドキュメントを確認したところ、アセンブリ登録用のgacinstallのみが見つかりましたが、COM+の相互作用には使用されていません。だから私はこれを[Run]
セクションに追加しました
ただし、セットアップをテストすることにより、この行はスキップされます。DLLは、[Files]
セクションの前にターゲットにコピーされ、使用可能になります。セットアップ後、コマンドラインから手動でRegSvcs.exeを実行することもできます。