Windows への DLL のインストールと登録。 Windows OSにDLLファイルを登録する レジストリにファイルを登録する方法

16.08.2023

DLL と ActiveX が Windows 7 に登録されていません - どうすればよいですか?

XP までの使い慣れた Windows では、regsvr32 コマンドを使用して Dll および ActiveX コンポーネントの登録を問題なく実行できました。

Windows 7 でも基本的には同じですが、いくつかの「改良」が加えられているため、通常の手順では期待した結果が得られないことがよくあります。 例えば:

非常に明確で有益なメッセージに同意します。 OS 開発者にとっての優れた理由は、このメッセージが人間の言語に翻訳される、さらに改良された新しいバージョンである Windows 8 を購入してリリースすることをユーザーに提案することです。

つまり、ターミナル ウィンドウ ( コマンドライン、cmd) は、「管理者として実行」コマンド (右クリックして使用可能) で開く必要があります。

ほとんどの場合、これで問題は解決します。

64 ビット バージョンの OS を使用している場合は、追加の手順が必要になる場合があります。 実際、その中のプログラムは64ビットだけでなく32ビットも可能です。 さらに、64 ビットはリソースを大量に消費するアプリケーションでのみ役立つため、ほとんどのプログラムは 32 ビットです。

特に、 クライアント部分 1C (つまり、ユーザーが作業する 1C) は 32 ビット アプリケーションです。 (1C サーバーはすでに 32 ビットまたは 64 ビットのいずれかにすることができますが、これは大規模な組織に当てはまります。1C Accounting と 5 人のユーザーがいる場合、99% の 1C サーバーは存在せず、すべてが 32 ビットになります。 )。

ActiveX コンポーネントは 32 ビットまたは 64 ビットにすることもでき、ビット数がアプリケーションと一致するバージョンを使用する必要があります。 OcvitaBarcode ActiveX は 32 ビット アプリケーションです。

したがって、Windows 6 64 ビットに 32 ビットと 64 ビットの ActiveX を登録するプログラムも異なりますが、どちらも regsvr32.exe と呼ばれます。 (コズマ・プルトコフが言ったように、「象のいる檻に「バッファロー」と書かれても、自分の目を信じてはいけません。」) したがって、単にコマンドラインに入力するだけでも、

regsvr32 some.ocx

その後、理論的には必要な regsvr32 が開始されるはずですが、実際には何でも開始できます。 なぜこれが行われるのでしょうか? まあ、誰もが同じことをするでしょう、あなたがすぐに人道的にそれをした場合、誰がやるでしょう 新しいバージョンウィンドウズ買います。

したがって、32 ビット regsvr32 の起動を保証するには、ターミナル ウィンドウにコマンドを入力する必要があります。

c:\windows\syswow64\regsvr32.exe OcvitaBarcode.ocx

Windows が c:\windows にインストールされていない場合は、当然、そのままのパスを指定します。 また、ターミナル ウィンドウは管理者として開く必要があることに注意してください。

上記のルールに従い、32 ビット ActiveX を含みます。 OcvitaBarcode ActiveX は Windows 7 で問題なく動作します。


Windows の非常に不快なエラー「モジュールはロードされましたが、DLLRegisterServer エントリ ポイントが見つかりませんでした」は、通常、プログラムが動作中にアクセスするダイナミック リンク ライブラリ (略称「.dll」) の誤った機能に関連しています。 。 その結果、組み込まれた Windowsプロセス OS へのライブラリの登録責任者が受け入れを拒否したか、ライブラリが見つかりません。 したがって、動作していないモジュールにアクセスするプログラムは機能しません。 したがって、セクションに分類することを提案します この問題それをどのように修正できるかを理解するためです。

「モジュールはロードされましたが、DLLRegisterServer エントリ ポイントが見つかりませんでした」というエラーの本質は何ですか?

したがって、このエラーの意味を「」という定義で説明し始めるのが自然でしょう。 図書館」。 ライブラリ、または一部のプログラミング言語ではモジュールは、開発で使用されるルーチンの集合です。 ソフトウェア。 簡単に言うと、小さくて独立したブロックの集合であり、それぞれが機能的に完全なコードです。

それらは何のためにあるのでしょうか? 最も多くのパフォーマンスを発揮するサブルーチンやプロシージャが多数あります。 さまざまなタスク。 それらの中には、多くのプログラムで標準的な計算操作が含まれているものもあります。 たとえば、オープニング ダイアログボックス Windows では、または任意の数値の平方根を求めることは標準的な、頻繁に使用される手順です。 そこで、ソフトウェアを作成するときに毎回このようなサブルーチンのコードを書かなくても済むように、あらかじめ用意された「ライブラリ」と呼ばれるファイルが考案されました。 特別な関数を使用してプログラムに接続することができ、このライブラリの実行可能コードはアプリケーション コードに埋め込まれないため、PC メモリが節約されます。


dllライブラリ

Windows に組み込まれている動的 DLL は、共有ライブラリ モジュールに属します。 ユーザーにとっての特徴は次のとおりです。

  • このようなライブラリに記述された関数は、複数のプログラムで同時に使用できます。
  • これらは、PC リソースを不必要に消費することなく、対応するプロセスの要求に応じて、つまり動的にロードされます。

残念ながら、 DLLモジュールデメリットもあります。 いわゆる「DLL 地獄」については話さないようにしましょう。共有動的ライブラリの非常にイデオロギー的な原則に違反しているにもかかわらず、現時点では Microsoft 開発者がこの問題を解決しているからです。 この記事では、次の欠点に注意することがはるかに重要です。

  • ライブラリに変更が加えられると、それを使用するプログラムが動作しなくなる可能性があります。 この欠陥はウイルス配布者の間で人気があります。 結局のところ、Windows 自体はモジュールに基づいて動作しており、そのコードを損傷することで OS の動作に影響を与える可能性があります。
  • ライブラリが見つからないか、そのバージョンが正しくない場合、このモジュールを使用するプログラムは正しく機能しないか、動作を拒否します。
  • DLL ライブラリに記述された関数は、次のアドレスを 1 つ受け取ります。 ラムこれらを呼び出すすべてのプロセスに対して、ソフトウェアを編成するモジュール方式の脆弱性の悪用が簡素化されます。

さて、それが何であるかについて エントリーポイント。 エントリ ポイントは、プログラムの最初のコマンドが保存されている RAM 内のアドレスです。 実際、1 つのライブラリに複数の関数を含めることができ、それぞれの関数には独自のエントリ ポイントがあり、特定のサブルーチンを呼び出すプロセスによってアクセスされます。

したがって、上記のすべてを 1 つの全体に組み合わせることで、「モジュールはロードされましたが、DLLRegisterServer エントリ ポイントが見つかりませんでした」というエラーの本質を明らかにすることができます。 この問題は、ライブラリをシステムに登録するときに発生します。 OS にオブジェクト インターフェイスをインストールする役割を担う「Regsvr32.exe」プロセスは、問題のある DLL 内の「DLLRegisterServer」ライブラリの登録機能を検出できません。

  • プログラムが要求した機能コードが壊れています。 これは、登録しているライブラリのバージョンが間違っているか、モジュール コード、レジストリ内のライブラリへのパス、またはその GUID を破損したウイルス攻撃によって発生する可能性があります。
  • DLLRegisterServer 関数は、最初は登録するライブラリのコードに存在しない場合があります。
  • Windows の DLL 実装を制御する COM/ActiveX コンポーネントとライブラリ コードが統合されていない。
  • 登録プロセスは通常、プラグイン モジュールへのパスを登録することで構成されます。 Windows レジストリこれにより、OS はライブラリを「認識」し、それを要求しているプログラムにシステム内の特定のモジュールの有無を通知できるようになります。 さらに、サブルーチンに含まれる各クラスまたはオブジェクトには一意の GUID が割り当てられます。これは、プログラムが DLL ライブラリ自体ではなく、その構成に含まれる機能コンポーネントで動作するため、登録にも必要です。 これは、ライブラリが正しく登録されていない場合、レジストリに書き込まれた値が間違ったままとなり、その結果、OS がライブラリを「認識」できなくなり、ソフトウェアがライブラリに接続できるようになります。

ライブラリ OS の可視性に関して問題が発生する主な理由を検討したら、それらを解決する方法に進むことができます。

モジュールはロードされているが、DLLRegisterServer エントリ ポイントが見つからない問題を修正しました。

したがって、「モジュールはロードされていますが、DLLRegisterServer エントリ ポイントが見つかりません」という問題に独自に対処するには、ウイルスなどの要因によって破損したライブラリをダウンロードする必要があります。 その名前は、ポップアップ表示されるエラー メッセージで確認できます。


Thumbcache.dll ライブラリ エントリ ポイントが見つかりません

DLLライブラリをダウンロードする

ライブラリをダウンロードするときは、必ず最初にライブラリのビット数を確認してください。 Windowsのバージョン(x32/x64)。 不適切な DLL ファイルを見つけてインストールした場合、「モジュールはロードされましたが、DLLRegisterServer エントリ ポイントが見つかりません」というエラーは修正されません。 手動でダウンロードしたファイルを、C:\Windows にある SysWOW64 フォルダーと System32 フォルダーに配置します。

非常に重要なニュアンスが 1 つあります。DLL ライブラリをダウンロードするときは、疑わしいリソースを決して使用しないでください。 まず、そのようなサイトからのデータは単にあなたの OS に適していない可能性があります (多くの場合、それらは切り詰められたバージョンです) 希望のファイル)、そして第 2 に、問題を回避できないだけでなく、新たな問題を追加する悪意のあるコードが含まれている可能性が高くなります。 少しでも疑問を持ったら常にサイトをチェックし(これにはさまざまなオンラインサービスがあります)、ユーザーからのレビューやコメントを読んでください。 ダウンロードした DLL ファイルが機能しない場合は、別のリソースから取得してください。

DLLライブラリの登録

パソコン上のライブラリが入っている場合 完璧な順序で, しかし、エントリ ポイントがまだ見つからないので、RegSvr32 に dll を登録してみます。 上の画像を基に問題を解決する方法を見てみましょう。 C:\Windows\SysWOW64 にあるファイル summcache.dll を登録します。
1 つ目の方法は、コマンド ラインを呼び出して必要なデータを入力することです。

  1. win+x を押して、表示されるメニューでコマンド ラインを見つけます。
  2. 最後のウィンドウをクリックすると、黒いウィンドウが表示されます。
  3. 「Computer>」という単語の後に、regsvr32 という単語と、問題のあるファイル C:\Windows\SysWOW64\thumbcache.dll へのパスをスペースで区切って入力します。

コマンドライン経由でDLLライブラリを登録する

Enter キーを押して、ライブラリの登録プロセスが完了するまで待ちます。 もし この方法役に立たない場合は、管理者としてコマンド ラインで同じ手順を繰り返してみてください。 システムに変更を加えるための十分な権限がない可能性があります。

2 番目の方法は、「Run」行を使用することです。

  • win+rを押して、必要な回線に電話します。
  • 表示されるフィールドに、ファイル RegSvr32.exe の名前と、不足しているライブラリへのパスを入力します。
  • 「OK」をクリックして結果を待ちます。

「Run」行で dll を登録します

Windows の更新プログラムのインストール

上記の方法で望ましい結果が得られなかった場合に使用できる方法は、OS のコンポーネントを更新することです。 これを行うには、コンピュータ上でアップデート センターを見つけます。 利用可能なアップデートをすべて表示し、ダウンロードします。 このプロセスは長いですが、必要です。 おそらく、問題は DLL ファイルの最初の間違ったコードにあり、開発者はすでにそのレベルでの解決策を見つけています。 アップデートのインストール中は、インターネット接続と PC 自体の電源を切らないでください。オフにしないと、結果が得られません。 すべてのファイルがダウンロードされていることを確認し、必要に応じて操作を繰り返してください。

多くの場合、「モジュールはロードされましたが、DLLRegisterServer エントリ ポイントが見つかりませんでした」というエラーを修正するために、開発者はさまざまな追加ソフトウェア (MOD、パッチ、インストール パッケージ) をリリースします。 この場合、検索してダウンロードします 最新バージョン問題が発生しているソフトウェア。 そして最後に、Windows 全体を再インストールするという非常に望ましくないオプションについて説明します。 もちろん、これを不必要に実行したい人はいませんが、システムが DLL ライブラリを開けず、上記のすべての方法がすでに試行されている場合は、インストールされているものをアンインストールし、別の OS アセンブリを (信頼できるソースから) インストールしてください。

この方法がどのように機能するかを確認してください。 DLL ファイルを登録するには、「regsvr」コマンドと DLL ファイルの名前 (ファイルがこのコマンドをサポートしている場合) を使用できます。 これにより、Windows レジストリから DLL ファイルへのパスが作成され、システムがファイルを見つけて使用しやすくなります。

  • 通常、このメソッドは、関連する DLL ファイルを登録するために使用されます。 サードパーティのプログラムシステム ユーティリティ (コマンド ラインなど) と直接対話します。

「エントリーポイント」エラーの本質を理解する。 DLL ファイルがすでに登録されている場合、その DLL ファイルが「regsvr」コマンドをサポートしていない場合、またはそのコードにより Windows レジストリに接続できない場合は、「モジュールは読み込まれましたが、エントリ ポイント DllRegisterServer がありませんでした」というエラー メッセージが表示されます。見つかりました。」ロードされましたが、DllRegisterServer エントリ ポイントが見つかりません)。 このメッセージが画面に表示された場合は、DLL ファイルを登録できません。

  • 「エントリ ポイント」エラーは、DLL ファイルを登録する必要がないことを確認するものであるため、それほど問題ではありません。
  • 登録する DLL ファイルを見つけます。目的の DLL ファイルが含まれるフォルダーに移動して、それを見つけます。

  • DLLファイルのプロパティを開きます。 DLL ファイルを右クリックし、メニューから [プロパティ] を選択します。 ポップアップウィンドウが開きます。

    DLL ファイル名を見つけます。[プロパティ] ウィンドウの上部にあるテキスト ボックスに次の内容が表示されます。 フルネームファイル。

    • ほとんどの DLL ファイルには複雑な名前が付いているため、後で名前をコピーできるように [プロパティ] ウィンドウを開いたままにしておきます。
  • DLL ファイルへのパスをコピーします。所有 左ボタン[場所] 行に表示されるテキストに沿ってマウスをドラッグし、Ctrl + C を押して DLL ファイルへのパスをコピーします。

    コマンドラインを見つけます。[スタート] メニューの検索バーに「コマンド プロンプト」と入力します。 コマンド プロンプト アイコンが [スタート] メニューの上部に表示されます。

    管理者としてコマンド プロンプトを開きます。これを行うには:

  • DLL ファイルのあるディレクトリに移動します。 cd と入力し、スペースバーを押し、Ctrl + V を押して DLL ファイルへのパスを貼り付け、次にキーを押します。 ↵入力.

    • たとえば、DLL ファイルが「Windows」フォルダー内の「SysWOW64」フォルダーにある場合、コマンドは次のようになります: cd C:\Windows\SysWOW64
  • コマンド「regsvr」とDLLファイルの名前を入力します。「 regsvr32 」と入力し、スペースバーを押し、DLL ファイルの名前 (.dll 拡張子とともに) を入力して、 を押します。 ↵入力。 DLLファイルが登録できる場合は、登録確認画面が表示されます。

    • たとえば、DLL ファイル名が「usbperf.dll」の場合、コマンドは次のようになります: regsvr32 usbperf.dll
    • DLL ファイルの名前をコピーするには、DLL ファイルを含むフォルダーを再度開き ([プロパティ] ウィンドウが開きます)、ファイル名を強調表示して、Ctrl + C キーを押します。 次に、名前をコマンド ラインに貼り付けます。これを行うには、Ctrl + V を押します。
    • DLL ファイルがすでに登録されている場合、または登録できない場合は、登録確認ではなく「エントリ ポイント」エラーが表示されます。
  • DLL ファイルの登録を解除し、再登録してみてください。「regsvr」コマンドを入力すると「エントリ ポイント」エラーではないエラーが発生する場合は、DLL ファイルを登録解除してから再登録してください。 このために:

    • 「regsvr32 /u filename.dll」と入力し、クリックします。 ↵入力。 「ファイル名」の代わりに、DLL ファイルの名前を入力します。
    • regsvr32 filename.dll と入力し、クリックします。 ↵入力。 「ファイル名」の代わりに、DLL ファイルの名前を入力します。
  • 非常に多くの場合、ユーザーは Windows の 7 または 8 バージョンに DLL を登録する方法について質問します。 通常、この質問は、必要なライブラリが PC 上にないことをシステムがユーザーに通知した後に表示されます。

    実際、ライブラリの登録は非常に簡単です。完了する必要があるのは 1 つのステップだけです。 ただし、これを行うには管理者権限が必要です。

    しかし、これにはいくつかのニュアンスがあります。 例えば登録が成功した場合 DLLエラー必要なライブラリがなくても失われることはありません。 さらに、RegSvr32 エラーが発生し、このバージョンのオペレーティング システムを搭載した PC ではモジュールが動作できないという通知が表示される場合があります。 また、DLLRegisterServer アクセス ポイントが見つからないことを示している場合もあります。 これは、誤ったアクションが実行されたことを示すものではありません。

    DLLをOSに登録する3つの方法

    以下で説明するすべてのアクションは、ライブラリをコピーする場所が見つかり、DLL が System32 ディレクトリまたは SysWOW64 ディレクトリ、またはそれがあるべき別の場所にあることを前提としています。

    DLL 登録のすべての操作は regsvr32.exe を使用して実行されますが、64 ビット システムを使用する場合、このファイルは SysWOW64 と System32 の 2 つのディレクトリに配置される可能性があることに注意する必要があります。 これらのファイルは、System32 ディレクトリにある 64 ビット ファイルとは異なることに注意してください。 いずれの場合も、ファイル名だけでなく、regsvr32.exe へのパスを書き込むことをお勧めします。

    最初の方法は非常に一般的で、インターネット上でよく見つかります。 それはいくつかの操作で構成されます。 まず、Win + R を押し、「ファイル名を指定して実行」ウィンドウに「regsvr32.exe path_to_dll_file」と入力して「OK」をクリックします。 また、「ファイル名を指定して実行」が有効になっている場合は、「スタート」メニューに表示されます。

    成功すると、ライブラリの登録が成功したことを示す通知が画面に表示されます。 ただし、モジュールはロードされたものの、DllRegisterServer アクセス ポイントが見つからないため、DLL が正しいファイルであることを確認する必要があるという通知が表示される可能性が高くなります。

    次の方法では、管理者としてコマンド ラインを実行し、上記の方法と同じコマンドを記述します。 コマンドラインを開く必要があります。 「8」では、これを行うには、Win + X を押して、必要な項目を指定する必要があります。 「7」では、「スタート」にコマンドラインがあります。 それを右クリックして「管理者として実行」を選択する必要があります。

    次に、前の方法と同様に、regsvr32.exe path_to_dll を入力する必要があります。 ただし、登録は失敗する可能性が高くなります。

    また、まれに必要となる方法もあります。 登録するDLLを右クリックし、「プログラムから開く」を選択する必要があります。 この後、「参照」をクリックして、System32 または SysWow64 ディレクトリで regsvr32.exe を見つけ、それを使用して DLL を実行する必要があります。

    原則として、オペレーティング システムに DLL を登録するためのすべてのオプションは同じ本質を持っています。
    各ユーザーが自分にとってより便利な方法を選択できるようになります。 しかし、なぜ DLL の登録が機能しないのかを理解する必要があります。

    DLL の登録が失敗する理由

    PC に DLL がない場合、ゲームやユーティリティが起動せず、エラーが表示されます。このファイルをダウンロードして登録する必要がありますが、モジュールがこの動作では動作できないという通知が表示されます。システムに問題があるか、DllRegisterServer アクセス ポイントが存在しない場合でも、動揺する必要はありません。この状況から抜け出す方法はあります。

    これはいくつかの理由で発生する可能性があります。 まず、すべてのファイルがログに記録されることを意図しているわけではありません。 この方法で登録を実行するには、DllRegisterServer 関数をサポートするファイルが必要です。 場合によっては、そのようなファイルがシステム上にすでに存在するためにエラーが発生することがあります。

    次に、このファイルのダウンロードを提案する一部のリソースにはその名前のダミーが含まれており、ライブラリではないため登録できません。

    この問題を解決するにはさまざまな方法があります。 プログラマは、ライブラリを登録するときに regasm.exe を使用できます。 のために 一般ユーザーこのファイルが何に必要なのかを調べることをお勧めします。 この情報を使用して、すべてをインストールするインストーラーをダウンロードできます。 必要なライブラリそしてそれらをオペレーティング システムに個別に登録します。

    たとえば、d3d で始まるすべてのファイルは、DirectX を使用してインストールできます。 また、msvc ライブラリは Visual Studio 再頒布可能パッケージを使用してインストールされます。 トレントからゲームをダウンロードした後にゲームが開かない場合は、変更された DLL が削除されている可能性があるため、ウイルス対策レポートを確認する必要があります。

    多くの場合、ライブラリを登録する代わりに、ライブラリと同じディレクトリ内の DLL の場所を使用できます。 実行可能ファイルこのライブラリを必要とするexe。

    * というメッセージが表示されます。 dll(例えば、 VCompLib.dll)。 この場合、当然ながらプログラムは起動しません。

    エラー メッセージは異なる場合があります (主にプログラムがどの言語で書かれているかによって異なります)。次に例を示します。 「コンポーネント「MSCOMM32.OCX」が正しく登録されていません: ファイルが見つからないか無効です。」 、 または 「MSVBVM50.DLL が見つからないため、アプリケーションを起動できませんでした。 アプリを再インストールすると、この問題が解決する可能性があります。」、 または 「ランタイムDLL/OCXファイルエラー」。 ウィンドウが表示される場合があります プログラム互換性アシスタントメッセージ付き このプログラムには不足している Windows コンポーネントが必要です.

    問題を解決する方法

    * に関連するエラーが発生した場合。 dll、 必要:

    1. プログラムを再インストールします。

    2. プログラムを再インストールしても問題が解決しない場合は、システム上に必要なファイルが存在するかどうかを確認する必要があります。

    ファイル *. dllは、原則として、次のフォルダーに配置する必要があります。 \Windows\システム32(頻度は低いですが、特定のプログラムのディレクトリにあります)。 ファイルが存在する場合は、それらを登録する必要があります。

    必要なファイルが存在しない場合は、インターネット上で見つけてダウンロードし、フォルダーにコピーします。 \Windows\システム32 そしてプログラムディレクトリへ。 次に、それらを登録する必要があります。

    *.dll ファイルの登録方法

    登録中*。 dll登録サーバーを使用して実行される regsvr32.exe(ディスクアドレスは \Windows\システム32).

    登録方法を見てみましょう。

    1. ボタンをクリックします 始める;

    – テキストフィールド内 プログラムとファイルを検索する入力 regsvr32 ファイル名–>入力 .

    2. ボタンを押します 始める;

    – テキストフィールド内 プログラムとファイルを検索する入力 cmd;

    – 表示されるリスト(見出しの下) プログラム) 右クリック cmd.exe;

    - から コンテキストメニュー選択する 管理者として実行;

    – プロンプトが表示されたら、パスワードを入力します。

    - 開いた窓の中で システムプロンプトの後、次のように入力します。 regsvr32 ファイル名 、 プレス 入力.

    3. 使用する場合 ファイルマネージャー トータルコマンダー , その後、 * を登録できます。 dllコマンドラインを使用して トータルコマンダー.

    *を登録する場合。 dll成功するとウィンドウが表示されます RegSvr32対応するメッセージを含めます。例: 「C:\WINDOWS\system32\msvbvm50.dll の DllRegisterServer が正常に実行されました。」:


    注意事項

    1. 登録時※。 dllそれらはに記録されています Windows レジストリ。 同時にスレッド内で 対応するパラメータが作成されます REG_DWORD意味のある 1 .

    2. コマンドの使用方法 regsvr32:

    regsvr32 ] DLL ファイル

    /u– 登録をキャンセルします DLL;

    /秒– 「静か」モード – メッセージウィンドウは表示されません。

    /私– 原因 DLLインストール、オプションの command_string をパラメータとして渡すと、/u スイッチと一緒に使用すると、 DLLアンインストール;