Windows で特定の DLL ファイルが見つからないというエラーが表示された場合、数多くある DLL サイトの 1 つからファイルをダウンロードしたくなることがあります。そうすべきではない理由は次のとおりです。
DLL とは何ですか?
インターネットからダイナミック リンク ライブラリ (DLL) ファイルをダウンロードしてはいけない理由を説明する前に、まず DLL ファイルとは何かを見てみましょう。 DLL ファイルは、Windows で特定のアクティビティを実行するためのコードとデータのセットを含むライブラリです。 アプリは、そのアクティビティを実行する必要があるときに、それらの DLL ファイルを呼び出すことができます 。 DLL ファイルは、Windows では直接実行できないことを除けば、実行可能 (EXE) ファイルによく似ています。つまり、EXE ファイルと同じように、DLL ファイルをダブルクリックして実行することはできません。代わりに、DLL ファイルは他のアプリによって呼び出されるように設計されています。実際、これらは複数のアプリから同時に呼び出されるように設計されています。 DLL 名の「リンク」部分は、別の重要な側面も示唆しています。複数の DLL をリンクして、1 つの DLL が呼び出されるときに、他の多数の DLL も同時に呼び出すことができます。
Windows 自体は、DLL を広範囲に使用しています。
C:\Windows\System32
フォルダーで教えてもらえます。ここで説明している内容の例として、Windows システム ファイル「comdlg32.dll」について考えてみましょう。コモン ダイアログ ボックス ライブラリとも呼ばれるこのファイルには、Windows で表示される多くの一般的なダイアログ ボックス (ファイルを開いたり、ドキュメントを印刷したりするためのダイアログ) を構築するためのコードとデータが含まれています。この DLL の命令は、ダイアログ ボックス宛てのメッセージの受信と解釈から、ダイアログ ボックスが画面上でどのように表示されるかの指定に至るまで、あらゆる処理を行います。明らかに、複数のアプリがこの DLL を同時に呼び出すことができます。そうしないと、一度に複数のアプリでダイアログ ボックス (以下のような) を開くことができなくなります。
DLL を使用すると、コードをモジュール化して再利用できるため、開発者は日常的または一般的な機能を実行するためにコードを最初から作成するのに時間を費やす必要がなくなります。また、開発者はアプリと一緒にインストールする独自の DLL を作成しますが、アプリによって呼び出される DLL の大部分は、実際には Windows または Microsoft .NET Framework や Microsoft C++ 再頒布可能 パッケージなどの追加パッケージにバンドルされています。この方法でコードをモジュール化することのもう 1 つの大きな利点は、特に DLL がアプリの開発者から提供されたものではない場合、アプリ全体ではなく各 DLL に更新を適用しやすくなることです。たとえば、Microsoft が .NET Framework 内の特定の DLL を更新すると、それらの DLL を使用するすべてのアプリは、更新されたセキュリティまたは機能をすぐに利用できるようになります。
ダウンロードした DLL が古い可能性がある
DLL について少し理解した上で、システムに DLL が欠落している場合にインターネットから DLL をダウンロードしてみてはいかがでしょうか。
ダウンロードした DLL で遭遇する最も一般的な問題は、DLL が古いということです。世の中の DLL サイトの多くは、自分の (またはユーザーの) コンピュータから DLL をアップロードするだけで DLL を入手します。おそらく問題はすでに見えているでしょう。これらのサイトのほとんどはトラフィックを必要とするだけであり、DLL がアップロードされると、ファイルを最新の状態に保つ動機はほとんどありません。これに加えて、通常、ベンダーは更新された DLL を個別のファイルとして一般にリリースすることはなく、サイトがファイルを最新の状態に保とうとしても、あまり成功しない可能性が高いことがわかります。
DLL は通常、パッケージに統合されるというさらなる問題もあります。パッケージ内の 1 つの DLL の更新には、同じパッケージ内の他の関連する DLL の更新も伴うことがよくあります。つまり、万が一、最新の DLL ファイルを入手できたとしても、同じバージョンの DLL ファイルを入手できないことを意味します。更新されました。
ダウンロードした DLL が感染する可能性がある
あまり一般的ではありませんが、ベンダー以外のソースからダウンロードした DLL には、PC に感染する可能性のあるウイルスやその他のマルウェアが読み込まれている可能性があるという、より深刻な問題が発生する可能性があります。これは、ファイルの入手場所についてあまり注意を払っていないサイトに特に当てはまります。そして、それらのサイトが危険な情報源についてわざわざ教えようとするわけではありません。本当に恐ろしいのは、感染した DLL ファイルをダウンロードすると、DLL ファイルの性質上、通常の感染したファイルよりも深いアクセスがそのファイルに与えられる危険性があることです。
ここで良いニュースは これらの感染した DLL ファイルが実際にシステムに保存される前に検出し、損害を防ぐことができるということです。ただし、優れたウイルス対策プログラムであっても、完全な保護を提供できるわけではないことを覚えておく必要があります。危険なファイルをダウンロードする習慣がある場合は、いつかその危険にさらされる可能性があります。これらの DLL サイトは避けるのが最善です。
いずれにせよ、彼らはおそらくあなたの問題を解決しないでしょう
PC 上の 1 つの DLL ファイルだけが破損または削除されている可能性もありますが、他の DLL または関連アプリ ファイルも破損または欠落している可能性が高くなります。特定のファイルに関するエラーが発生する理由は、それがアプリがクラッシュする前に発生した最初のエラーであり、残りのエラーについては単に通知されていないためです。これは、問題の原因に関係なく当てはまります。
DLL が見つからなかったり破損したりするのはなぜですか?別の誤ったアプリまたはアップデートがファイルを置き換えようとして失敗したか、古いコピーに置き換えられた可能性があります。メイン アプリのインストールまたは .NET などのパッケージに問題がある可能性があります。 ハードディスク上の不良セクタ など、ファイルの正常なロードを妨げる別の問題が発生している可能性もあります。
DLL エラーを修正するにはどうすればよいですか?
安定した最新のクリーンな DLL を確実に入手する唯一の方法は、その DLL の作成元のソースから入手することです。通常、そのソースは次のようになります。
- Windows インストール メディア 。インストール メディアから DLL ファイルを単純にコピーできる可能性はほとんどありませんが、Windows の再インストールのような大胆な操作を行う前に試してみる簡単なオプションがあります。 Windows リソース保護ツール (システム ファイル チェッカー (SFC) と呼ばれることが多い) を使用すると 、Windows で破損または欠落しているシステム ファイルをスキャンして修正できます。ツールを実行するときは、そこからファイルをコピーする必要がある場合に備えて、インストール メディアを手元に用意してください。 (インストール ディスクをお持ちでない場合は、 できます。)
- Microsoft .NET Framework パッケージ 。 .NET のいくつかのバージョンは Windows とともに自動的にインストールされ、多くのアプリではそれらのパッケージからファイルもインストールされます。 .NET Framework に関する記事を 参照してください。この記事には、関連する問題を見つけて修復するためのアドバイスも含まれています。
- さまざまな Microsoft Visual C++ 再頒布可能パッケージ 。使用するアプリによっては、複数のバージョンの C++ 再頒布可能パッケージが PC にインストールされている場合があります。どれが原因であるかを絞り込むのが難しい場合もありますが、 C++ 再頒布可能パッケージに関する記事から 始めるのが良いでしょう。この記事には、いくつかのトラブルシューティング手順と、Microsoft から直接最新バージョンをダウンロードできるリンクも掲載されています。
- DLL に付属しているアプリ 。 DLL が別のパッケージの一部ではなくアプリと一緒にインストールされた場合、最善の策はアプリを再インストールすることです。一部のアプリでは、完全な再インストールの代わりに修復を実行できます。修復では通常、インストール フォルダー内の不足しているファイルが検索されるため、どちらのオプションでも機能するはずです。
すべてが失敗した場合は、アプリのベンダーに連絡して、個々の DLL ファイルのコピーを要求できる場合があります。一部の企業はこの要求に応じます。そうでない人もいます。個別のファイルを提供しない会社に遭遇した場合、少なくとも問題を解決するための他の提案を提供してくれる可能性があります。





