Windowsガイド

DLL ファイルを開く方法:Windowsで安全に確認する

知りたい内容に合わせて、読み取り専用の確認方法を選びましょう。DLLはコンパイル済みのプログラムコードですが、調べるだけならアプリに読み込ませる必要はありません。

更新日

まず知っておきたいこと

DLLの名前、バージョン、署名を確認するだけなら、Windowsのプロパティや信頼できる確認ツールから始めます。埋め込みリソースや開発情報が必要な場合にだけ、専用ビューアーや開発者向けツールを使います。中身を見る目的で、出所の分からないDLLを実行しないでください。

虫眼鏡と注意を示す盾でDLLファイルを確認する編集用イラスト
概念図:ライブラリを調べることと実行することは別の操作です。

DLL ファイルの役割

DLL ファイルはDynamic Link Libraryの略で、日本語では動的リンクライブラリと呼ばれます。Windowsのプログラムは、共通の機能、データ、リソースが必要なときにDLLを読み込むことがあります。ひとつのアプリ専用のものも、関連する複数の部品が使うものもあります。そのため、通常はインストーラーが選んだフォルダーやシステムが管理する場所に保存されています。

DLL ファイルはコンパイルされたソフトウェアであり、Word文書、画像、普通のテキストファイルではありません。ダブルクリックしても役立つ内容が表示されないのが一般的です。「プログラムから開く」が出ても、ファイルが壊れているとは限りません。DLL ファイルを開く方法を探していても、適当なアプリを選んでコードを確実に読めるようにはなりません。

DLL ファイルを開くことが目的でも、正体を確認する、埋め込みアイコンを見る、エクスポート関数を一覧する、.NETアセンブリを調べる、アプリにライブラリを読み込ませる作業は別々です。DLL ファイルを開く方法は目的に合わせて選びましょう。最初は読み取り専用にして、ファイルを元の場所から移動しないでください。

  • メタデータの確認では、アプリにライブラリの機能を呼び出させず、ファイルに保存された情報を読み取ります。
  • リソースビューアーでは、一部のアイコン、文字列、ダイアログを表示できる場合がありますが、プログラム全体の動作は分かりません。
  • DLLをプロセスに読み込むとコードが実行される可能性があります。プロパティを見るだけの場合とは、リスクが異なります。

DLL ファイルを開く方法を目的から選ぶ

DLL ファイルを開く方法は、何を知りたいかで決まります。ファイルを調べることと、プログラムに読み込ませることは同じではありません。正体やアイコンを確かめるだけなら、読み取り専用の表示で十分です。デコンパイルやWindowsへの登録を最初に行う必要はありません。

知りたい結果に合わせてツールを選び、変更の少ない方法から始めましょう。
確認したいこと最初に使う方法分かる可能性がある内容
名前、場所、サイズ、バージョンエクスプローラーのプロパティ基本情報と、提供元が記録したバージョン情報。
提供元や署名の状態Windowsの署名表示またはMicrosoft Sysinternals Sigcheck署名の有無と、記録されている署名者の情報。
アイコンや埋め込みリソース信頼できるリソースビューアーの閲覧モードライブラリに含まれる一部の素材。内部の動作全体ではありません。
ヘッダーやエクスポート関数PE解析ツールまたは開発ツール構造や公開関数。元のソースコードではありません。
.NETアセンブリのメタデータ実績のある.NET解析ツール対応するアセンブリの型や中間表現。
DLL不足エラーの修復アプリまたはランタイムを修復・再インストールソフトウェア提供元が案内するファイルと修復手順。
DLLからファイル詳細、署名確認、埋め込み画像リソースの確認方法へ分岐する図
拡張子だけでなく、知りたい結果を基準にツールを選びます。

WindowsでDLLのプロパティを確認する

DLL ファイルを開く前に基本情報を見たい場合は、エクスプローラーで対象を探し、右クリックして「プロパティ」を選びます。「全般」には場所、種類、サイズ、日付が表示されます。「詳細」には提供元が追加したバージョン情報などが載る場合があります。項目が空でも珍しくなく、それだけで安全性は判断できません。

「デジタル署名」タブは、Windowsが署名を認識したときにだけ表示されます。詳細を開き、署名者と状態を確認します。有効な署名は、誰がファイルのデータに署名したか、署名後に変更されたかを判断する手掛かりになりますが、マルウェア判定ではありません。

  1. ファイルを探します。 DLLの場所と、どのアプリのフォルダーにあるかを記録します。
  2. プロパティを読みます。 種類、サイズ、詳細、表示される場合は署名タブを確認します。
  3. 照合して閉じます。 提供元と場所が想定どおりかを確認し、DLLを変更せずに閉じます。

DLLを読み込まずに署名を確認する

DLL ファイルを読み込まずに署名を確認するなら、コードを実行する必要はありません。PowerShellでAuthenticodeのメタデータを確認し、エクスプローラーで確認した正確なパスを指定してください。NotSignedは、認識できる署名が見つからなかったという意味で、直ちに悪意を示すものではありません。

Microsoft Sysinternals Sigcheckでは、バージョン、タイムスタンプ、デジタル署名、証明書チェーンを表示できます。一部のオプションはVirusTotalを照会したり、ファイルを送信したりすることがあります。共有の許可がない限り、個人用ファイルをアップロードしないでください。

PowerShellで署名を確認する

例のパスを、確認するDLLの実際のパスに置き換えます。

Get-AuthenticodeSignature -FilePath "C:\Path\example.dll" | Format-List Status,SignerCertificate

Sigcheckでメタデータを見る

既にSysinternalsがインストールされている場合に使える基本表示です。ファイルのアップロードは要求しません。

sigcheck.exe -nobanner "C:\Path\example.dll"

アイコンなどの埋め込みリソースを見る

DLL ファイルによっては、アイコン、文字列、バージョン情報、ダイアログなどが含まれています。リソースビューアーで一部を確認できることがあります。ツールは元の提供元から入手し、表示またはエクスポート機能を使います。DLLを実行、登録、編集、置換しないでください。

この表示でネイティブDLLの命令すべてが分かるわけではありません。アイコンが見つからなくても、ライブラリが空とは限りません。正体を知りたいだけなら、プロパティや署名の確認の方が簡単です。書き出したリソースは元ファイルと分けて保管しましょう。

ヘッダーやエクスポート関数を調べる

PE解析ツールでは、DLL ファイルのヘッダーやエクスポート関数を表示できます。Microsoft Visual Studioの開発者向けツールにはDUMPBINがあり、Developer Command Promptから使用できます。開発者は、既知のファイルを起動せずに構造を調べられます。

表示されるメタデータはソースコードではありません。関数名は手掛かりにすぎず、互換性を証明しません。ファイルの入手元とアーキテクチャを確かめ、出所不明のファイルは管理された環境で解析してください。

開発用の解析例

Visual Studioのツールがインストールされ、ファイルを調べる権限がある場合にだけ使います。

dumpbin /headers /exports "C:\Path\example.dll"

DLLが.NETアセンブリの場合

DLL ファイルの中には、管理された.NETアセンブリがあります。対応ツールなら、メタデータや中間表現を表示できます。ネイティブDLLとは仕組みが異なり、拡張子だけで種類を特定することはできません。

逆コンパイラーを使っても、元のプロジェクト、コメント、コンパイル設定がそのまま戻るわけではありません。調べる権利のあるソフトウェアだけを解析してください。読みやすいプレビューが表示されたからといって、出所不明のDLLを実行する理由にはなりません。

regsvr32やrundll32をDLLビューアーにしない

regsvr32とrundll32は、DLLの内容を表示するビューアーではありません。登録は自己登録型の一部のCOM部品を対象にし、rundll32は対応するエントリーポイントだけを呼び出します。任意のDLLに使うと、コードの読み込みやシステム状態の変更が起きる可能性があります。

出所不明のDLL ファイルをWindowsやアプリのフォルダーへコピーしたり、保護機能を無効にしたり、確認目的で登録したりしないでください。信頼できる提供元が登録を求める場合は、対象ファイル、アーキテクチャ、正確なコマンドを先に確認します。必要がなければ読み取り専用の方法にとどめましょう。

DLLは読み取り専用の確認経路を進み、プロセッサーへ向かう経路は遮断されている図
概念図:ファイルの調査とコードの読み込みは別の操作です。

DLL不足エラーを直したい場合

DLL不足の警告は、ファイルを開く依頼ではなく修復が必要な状態を示します。エラー全文とアプリ名を記録し、ソフトウェア提供元からアプリとランタイムを修復または再インストールします。Windows部品の場合は、サポートされている修復機能と更新を使用してください。

同じ名前でもバージョンやアーキテクチャが異なるDLL ファイルがあります。代替をSystem32やゲームのフォルダーへコピーしないでください。この問題の修復手順は、関連ガイドで別に確認できます。

よくある質問

DLLファイルを開くにはどのプログラムを使いますか?

すべてのDLLに使える単一のプログラムはありません。ファイル情報にはプロパティ、署名には確認ツール、リソースにはビューアー、ヘッダーや関数には開発者向けツールを使います。目的に合う方法を選びましょう。

メモ帳でDLLを開いても安全ですか?

判読できないバイナリ文字が表示され、保存するとファイルを壊すことがあります。メモ帳はDLLの解析には向きません。プロパティ、署名、リソース、または読み取り専用の構造解析ツールを使ってください。

デジタル署名が有効ならDLLは安全ですか?

いいえ。有効な署名は署名者を示し、署名後にデータが変更されていないか確認する手掛かりになります。それでも、想定した提供元と保存場所かを確かめてください。

DLLを開くためにregsvr32を使うべきですか?

いいえ。regsvr32は自己登録する一部のCOM部品を登録するもので、任意のDLLを表示しません。そのファイル向けの確認済み手順を提供元が示した場合に限って使います。

同じ名前のDLLをダウンロードすれば不足エラーを直せますか?

名前だけではバージョン、アーキテクチャ、提供元、互換性を確認できません。まず要求元のアプリやランタイムを修復し、必要なファイルはソフトウェア提供元から入手します。

公式リファレンス

  • Microsoft Sysinternals Sigcheck バージョン、タイムスタンプ、デジタル署名、証明書チェーンの確認に関する公式ドキュメントです。

DLL不足エラーを安全に修復する。 ファイルを要求したアプリまたはランタイムに応じた手順を確認できます。