DLLファイルとは何ですか?PCから1つが欠落しているのはなぜですか?

Windowsが特定のDLLファイルを見つけられなかったというエラーが表示された場合、そこにある多くのDLLサイトの1つからファイルをダウンロードしたくなることがあります。これがあなたがすべきではない理由です。

DLLとは何ですか?

関連:rundll32.exeとは何ですか?なぜ実行されているのですか?

インターネットからダイナミックリンクライブラリ(DLL)ファイルをダウンロードしない理由を説明する前に、まずDLLファイルとは何かを見てみましょう。 DLLファイルは、Windowsで特定のアクティビティを実行するためのコードとデータのセットを含むライブラリです。その後、アプリは、アクティビティを実行する必要があるときに、それらのDLLファイルを呼び出すことができます。 DLLファイルは、Windowsで直接実行できないことを除けば、実行可能(EXE)ファイルによく似ています。つまり、DLLファイルをダブルクリックして、EXEファイルと同じように実行することはできません。代わりに、DLLファイルは他のアプリによって呼び出されるように設計されています。実際、これらは一度に複数のアプリから呼び出されるように設計されています。 DLL名の「リンク」部分も、別の重要な側面を示唆しています。複数のDLLをリンクして、1つのDLLが呼び出されたときに他の多くのDLLも同時に呼び出されます。

Windows自体は、C:\Windows\System32フォルダのツアーでわかるように、DLLを広範囲に使用します。私たちが話していることの例として、Windowsシステムファイル「comdlg32.dll」を考えてみましょう。このファイルは、共通ダイアログボックスライブラリとも呼ばれ、Windowsに表示される多くの一般的なダイアログボックス(ファイルを開く、ドキュメントを印刷するなどのダイアログ)を作成するためのコードとデータが含まれています。このDLLの命令は、ダイアログボックス宛てのメッセージの受信と解釈から、ダイアログボックスが画面上でどのように表示されるかを指定するまで、すべてを処理します。明らかに、複数のアプリが同時にこのDLLを呼び出すことができます。そうしないと、一度に複数のアプリでダイアログボックス(以下のような)を開くことができません。

DLLを使用すると、コードをモジュール化して再利用できます。つまり、開発者は、ありふれた機能や一般的な機能を実行するために、コードを最初から作成するのに時間を費やす必要がありません。また、開発者はアプリと一緒にインストールする独自のDLLを作成しますが、アプリによって呼び出されるDLLの大部分は、実際にはWindowsまたはMicrosoft .NETFrameworkやMicrosoftC ++再頒布可能パッケージなどの追加パッケージにバンドルされています。この方法でコードをモジュール化することのもう1つの大きな利点は、更新をアプリ全体ではなく各DLLに適用しやすいことです。特に、これらのDLLがアプリの開発者からのものではない場合はそうです。たとえば、Microsoftが.NET Frameworkで特定のDLLを更新すると、それらのDLLを使用するすべてのアプリは、更新されたセキュリティまたは機能をすぐに利用できます。

関連:Microsoft .NET Frameworkとは何ですか?また、なぜPCにインストールされるのですか?

ダウンロードしたDLLは古くなっている可能性があります

それで、私たちのベルトの下にあるDLLを少し理解した上で、システムにDLLがない場合は、インターネットからDLLをダウンロードしてみませんか?

ダウンロードしたDLLで発生する最も一般的な問題は、DLLが古くなっていることです。そこにあるDLLサイトの多くは、自分のコンピューターまたはユーザーのコンピューターからDLLをアップロードするだけでDLLを取得します。あなたはおそらくすでに問題を見ることができます。これらのサイトのほとんどはトラフィックを必要としているだけであり、DLLがアップロードされると、ファイルを最新の状態に保つためのインセンティブはほとんどありません。これに加えて、ベンダーは通常、更新されたDLLを個別のファイルとして公開することはなく、ファイルを最新の状態に保とうとするサイトでさえ、あまり成功しない可能性が高いことがわかり ます。

DLLが通常パッケージに統合されるというさらなる問題もあります。パッケージ内の1つのDLLの更新には、同じパッケージ内の他の関連するDLLの更新が伴うことがよくあります。つまり、万が一、最新のDLLファイルを取得したとしても、次のような関連ファイルは取得されません。更新されました。

ダウンロードしたDLLが感染する可能性があります

あまり一般的ではありませんが、潜在的にはるかに悪い問題は、ベンダー以外のソースからダウンロードしたDLLに、PCに感染する可能性のあるウイルスやその他のマルウェアがロードされる可能性があることです。これは、ファイルの入手先にあまり注意を払っていないサイトに特に当てはまります。そして、それらのサイトが危険な情報源についてあなたに話すために邪魔にならないようにするわけではありません。本当に怖いのは、感染したDLLファイルをダウンロードすると、DLLファイルの性質上、通常の感染したファイルよりも深いアクセス権がファイルに与えられるリスクがあることです。

関連:Windows 10に最適なアンチウイルスは何ですか?(Windows Defenderで十分ですか?)

ここでの朗報は、優れたリアルタイムのウイルス対策アプリは通常、これらの感染したDLLファイルを実際にシステムに保存する前に検出し、それらが損傷を与えるのを防ぐことができるということです。それでも、優れたウイルス対策プログラムでさえ完全な保護を提供しない可能性があることを覚えておく必要があります。危険なファイルをダウンロードする習慣をつけると、ある時点で追いつく可能性があります。これらのDLLサイトは避けるのが最善です。

彼らはおそらくとにかくあなたの問題を解決しないでしょう

PC上の1つのDLLファイルのみが破損または削除されている可能性がありますが、他のDLLまたは関連するアプリファイルも破損または欠落している可能性があります。1つの特定のファイルに関するエラーが発生する理由は、アプリがクラッシュする前に最初に発生したエラーであり、残りのファイルについては通知されないためです。これは、問題の原因に関係なく当てはまります。

関連:不良セクタの説明:ハードドライブが不良セクタを取得する理由とその対処方法

DLLが見つからないか破損するのはなぜですか?別の誤ったアプリまたはアップデートがファイルを置き換えようとして失敗したか、古いコピーに置き換えた可能性があります。メインアプリのインストールまたは.NETなどのパッケージの障害である可能性があります。ハードディスクの不良セクタなど、ファイルが正しく読み込まれないという別の問題が発生している可能性もあります。

DLLエラーを修正するにはどうすればよいですか?

安定した最新のクリーンなDLLを確実に取得する唯一の方法は、DLLが作成されたソースを介して取得することです。通常、そのソースは次のようになります。

関連:Windowsで破損したシステムファイルをスキャン(および修正)する方法

  • Windowsインストールメディア。インストールメディアからDLLファイルを単純にコピーできる可能性は低いですが、Windowsを再インストールするのと同じくらい大胆なことをする前に、すぐに試すことができます。 Windowsリソース保護ツール(多くの場合、システムファイルチェッカー(SFC)と呼ばれます)を使用できます。このツールは、Windowsで破損または欠落しているシステムファイルをスキャンして修正します。ツールを実行するときは、そこからファイルをコピーする必要がある場合に備えて、インストールメディアを手元に用意しておく必要があります。 (インストールディスクがない場合は、ここからダウンロードできます。)
  • Microsoft .NETFrameworkパッケージ。.NETのいくつかのバージョンはWindowsとともに自動的にインストールされ、多くのアプリもそれらのパッケージからファイルをインストールします。.NET Frameworkに関する記事を読むことができます。この記事には、関連する問題を見つけて修復するためのアドバイスもあります。
  • さまざまなMicrosoftVisual C ++再配布可能パッケージ。使用するアプリによっては、PCに複数のバージョンのC ++再頒布可能パッケージがインストールされている場合があります。どちらが原因であるかを特定するのは難しい場合がありますが、開始するのに適した場所は、C ++再頒布可能パッケージに関する記事です。この記事には、Microsoftから直接最新バージョンをダウンロードできるいくつかのトラブルシューティング手順とリンクも含まれています。
  • DLLに付属のアプリ。DLLが個別のパッケージの一部ではなく、アプリと一緒にインストールされた場合、最善の策はアプリを再インストールすることです。一部のアプリでは、完全な再インストールの代わりに修復を実行できます。修復では通常、インストールフォルダー内の不足しているファイルが検索されるため、どちらのオプションでも機能するはずです。

それでも問題が解決しない場合は、アプリベンダーに連絡して、個々のDLLファイルのコピーをリクエストできる可能性があります。一部の企業はこの要求を受け入れています。一部はそうではありません。あなたが個々のファイルを提供しない会社に出くわした場合、彼らは少なくともあなたの問題を解決するための他の提案を提供することができるかもしれません。