web-dev-qa-db-ja.com

レジスタDLL Windows Server 2008 R2上のファイル

Windows Server 2008 R2でCOM DLLファイルを登録しようとしています。

  1. cmdを管理者として実行します
  2. c:\windows\system32\regsvr32.exe c:\tempdl\temp12.dll

そのコマンドを実行すると、次のエラーが表示されます。

モジュールtemp12.dllのロードに失敗しました。バイナリが指定されたパスに保存されていることを確認するか、デビューしてバイナリまたは依存.DLLファイルの問題をチェックします。指定されたモジュールが見つかりませんでした。

Windows 2000で同じDLLファイルを登録できました。

私も試しました

c:\windows\syswow64\regsvr32 "c:\tempdl\temp12.dll"

そして、私はこのエラーを受け取りました:

モジュールc:\tempdl\temp12.dllはロードされましたが、DllRegisterServerへの呼び出しはエラーコード0x80040154で失敗しました。この問題の詳細については、エラーコードを検索用語として使用してオンラインで検索してください。

21
Broken Link

これは、DLL自体が別のCOMサーバーを最初に登録する必要がある場合、または別のDLLが利用できない場合。Regsvr32.exeツールはほとんど実行しません。LoadLibrary()を呼び出して、コマンドライン引数で渡されたDLLをロードします。その後、GetProcAddress()でDLLのDllRegisterServer()エントリポイントを見つけます。それ自体を登録するためにCOMサーバーに任せること。

thatコードが行うことはかなり推測できません。ただし、取得した診断はエラーコードからかなり自明です。何らかの理由で、このCOMサーバーは最初に別のCOMサーバーを登録する必要があります。エラーメッセージは安っぽいもので、what必要な他のサーバーを教えてくれません。 COMエラー処理の動作の悲しい副作用。

これをトラブルシューティングするには、SysInternalsのProcMonツールを使用します。 Regsvr32.exe(実際にはCOMサーバー)がサーバーを見つけるために開いているレジストリキーを示します。 CLSIDキーへのアクセスを探します。これにより、{guid}が何を探しているかのヒントが得られます。それでもサーバーDLLについてはわかりません。動作するマシンから取得したトレースとトレースを比較する必要があります。 InprocServer32キーには、DLLパスがあります。

26
Hans Passant

32ビットバージョンのregsvr32.exeを使用して、これを登録する必要がある場合がありますDLL:

c:\windows\syswow64\regsvr32 c:\tempdl\temp12.dll

5
Kev

エラー0x80040154はCOMのREGDB_E_CLASSNOTREGであり、「クラスが登録されていません」という意味です。基本的に、COMクラスはインストールレジストリで宣言されていません。

DLLを登録しようとしたときにこのエラーが発生した場合は、このDLL)の登録コードがanotherこのインストールで見つからないか、登録されていないCOMサーバー(DLLまたはEXE)。

元のDLLソースにアクセスできない場合、SysInternalの Process Monitor ツールを使用してCOMレジストリルックアップを追跡することをお勧めします。シンプルなRegMonツールですが、動作しない可能性があります)。

作業プロセス(ここではRegsvr32.exe)にフィルターをかけて、興味深いものだけをキャプチャする必要があります。次に、失敗するHKEY_CLASSES_ROOT\[a progid 、文字列]でクエリ(たとえば、NAME_NOT_FOUNDエラーで)を検索するか、HKEY_CLASSES_ROOT\CLSID\[a guid]でクエリを検索します。

PS:残念ながら、完全に機能するWindowsシステムでは失敗するように思われるものが多数ある可能性があるため、すべてのエラーを慎重に調査する必要があります。がんばろう :-)

4
Simon Mourier

ActiveX(OCX)をWindows Server 2008 R2に登録しているときに同様の問題が見つかりました。これを解決するために、私は http://www.chestysoft.com/dllregsvr/default.asp tool.Thereを使用しましたocxの依存関係の問題があるため、「モジュールtemp12.dllのロードに失敗しました。バイナリが指定のパスに保存されていることを確認するか、デビューしてバイナリまたは依存.DLLファイルの問題を確認してください。指定されたモジュールはエラーメッセージが見つかりました。このツールでOCXを登録しようとすると、ocxが依存関係にあるか、成功メッセージが表示されるかどうかを確認するメッセージが表示されます。 :\ windowsとその完了。その後、ocxを正常に登録しました。WindowsServer 2008 R2 64bitマシンでChestysoftツール(dllregsvr.exe)の32ビットバージョンを使用しました。

1
nitin jain
1
TmTron

これが発生しなければならないことです。

登録するDLL:c:\ windows\SysWOW64 \をコピーする必要があります

次に、「実行」ダイアログで、次のように入力します:C:\Windows\SysWOW64\regsvr32.exe c:\windows\system32\YourDLL.dll

次のメッセージが表示されます。

C:\ windows\system32\YourDLL.dllのDllRegisterServerは成功しました。

0
DevCompany

Regsvr32へのフルパスが必要なので、%windir $\system32\regsvr32 <*。dll>

0
Juls

このKB記事で説明されているように、COMオブジェクトがATLを使用している場合は、ATLをインストールする必要があります。

http://support.Microsoft.com/kb/201191

これらのライブラリは、おそらく正しいバージョンを確保するために開発者が提供する必要があります。

0
vcsjones