スキップしてメイン コンテンツに移動

投稿

2月, 2025の投稿を表示しています

Windowsが64bitになってもSystem32のフォルダを使う理由

64bitのWindowsでもシステムの主要な部品がC:\Windows\System32に入っています。フォルダ名の通り、元は32bitが由来のフォルダですがそのまま使われています。 Microsoftが過去資産を活かすための工夫ですが整理しておきます。 互換性を維持するため Windowsの32bit時代(Windows NT以降)から、システムの主要なライブラリや実行ファイルはC:\Windows\System32に格納されるようになりました。64bit版のWindowsでも、後方互換性を保つためにSystem32という名前を維持しています。 64bit版のバイナリがSystem32に格納される 64bit Windowsでは、64bitのシステムファイルがSystem32に格納され、32bitのシステムファイルはSysWOW64に格納されます。 逆のように見えますが、WOW64(Windows on Windows 64)という仕組みで32bitアプリを動作させるために、SysWOW64に32bit用のDLLや実行ファイルが収められています。 もしSystem64にしたらどうなるか もし64bit環境でSystem64という新たなフォルダを作成し、64bit用のシステムファイルをそこに配置していたら、従来のソフトウェア(特にハードコードされたパスを参照するもの)が正しく動作しない可能性があります。 そのため、System32という名前を維持したまま、内容を64bit用に置き換えています。 まとめ System32には64bit環境では64bitのシステムファイルが入っている SysWOW64には32bitのシステムファイルが入っている 名前の矛盾は互換性のための設計上の選択 混乱しやすい部分ですが、これがWindowsの互換性を支えている重要な仕組みのひとつです。

PCゲームやソフトがDLLを読み込む場所と順番

PCゲームやソフトを必要なDLLが無くて動かないときに「DLLが見つかりません」のメッセージが出たりします。 ランタイムパッケージを入れたり、DLLを準備したときにどのようにDLLが検索されているか重要です。 DLLを読み込む場所と順番 アプリケーションの実行ディレクトリ システムディレクトリ(例:C:\Windows\System32やC:\Windows\SysWOW64) Windowsディレクトリ(例:C:\Windows) カレントディレクトリ 環境変数PATHに含まれるディレクトリ この検索順序の特性で先に読ませたいDLLをロードさせることも可能です。 64bit環境で32bitアプリを動かす時 64bit環境のOSではシステムディレクトリ(C:\Windows\System32)は64bitのDLLが入っているため、32bitアプリではSystem32のDLLは利用されません。 SysWOW64の仕組みで32bitのDLLが用意されているC:\Windows\SysWOW64のディレクトリが利用されます。

PCゲームやソフトが動かない時のVisual C++ランタイム確認と対処方法

Windows PCのゲームやソフトが動かないときに確認したいのがVisual C++ランタイムです。 「DLLが見つかりません」「Visual C++のランタイムを入れてください」といったメッセージが出るときは、必要なランタイムが入っていません。 Visual C++ランタイムがどういうものか、確認方法、ダウンロード方法などを整理してみます。 Visual C++ランタイムとは Microsoftが提供するライブラリで、Windows上で Visual C++で開発されたアプリケーションを実行するために必要なコンポーネントです。 多くのアプリケーション(ゲーム、オフィスソフト、ユーティリティなど)はVisual C++を使用して開発されている場合が多いです。 アプリに必要なランタイムを組み込んでいない場合、ユーザー側でインストールする必要があります。 複数のランタイムをどの順番で入れても問題ない 正式な再頒布パッケージでインストールする場合、複数のランタイムは適切に管理されます。順番を問わず、ランタイムを入れてもDLLのダウングレードや削除がされないようになっています。 ランタイムのx86とx64は使うアプリに合わせる x86は32bitアプリに必要なもの、x64は64bitアプリに必要なものです。32bitアプリを使う場合はx86パッケージを入れます。 ランタイムのパッケージ 正式な再頒布可能パッケージ Microsoft Visual C++ 2015-2022 Redistributable Visual Studio 2015、2017、2019、2022で開発されたものに必要です。Visual C++ 2015から2022まではランタイムが1つのパッケージになっています。 Microsoft Visual C++ 2013 Redistributable Microsoft Visual C++ 2012 Redistributable Microsoft Visual C++ 2010 Redistributable Microsoft Visual C++ 2008 Redistributable Microsoft Visual C++ 2005 Redistributable 各Visual Studioで開発されたものは対応するランタイムが必要...