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

投稿

ラベル(Windowsの仕組み)が付いた投稿を表示しています

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アプリを使う場合は64bit環境でもx86パッケージを入れます。 ランタイムのパッケージ 正式な再頒布可能パッケージ Microsoft Visual C++ 2015-2022 Redistributable Visual C++ 2015、2017、2019、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 C++ 2005から20...

PCゲームで遊ぶ時にセキュリティソフトの負荷を下げる方法

 PCゲームを遊んでいるときはセキュリティソフトも動いていて、PCの負荷が全体的に上がっていることがあります。ゲームに充てられる処理性能が逼迫したり、減っています。 原因と負荷を下げるやり方をまとめておきます。 起きていること PCゲームで遊んでいるときにセキュリティソフトの負荷が上がっている。 ゲーム以外にCPUやディスクI/Oが使われていて、ゲームに充てられる処理性能が逼迫したり、減っている。 原因 ゲームのデータに対して、セキュリティソフトのリアルタイムスキャンが動いていることが多いです。 ストレージ上に大量のゲームデータを持っていたり、MMOなどのゲームではネットワーク経由で常時データをダウンロードしています。 画面の描画に使われるテクスチャデータは細かく沢山のファイルになります。数千、数万ファイルになっていることもあり、ゲーム中の読み取りも非常に多い状態です。 ゲームプログラムやデータが入っているフォルダ ゲームで使われるデータのキャッシュフォルダ 上記のようなフォルダが常時スキャンされている場合は重くなります。 対処方法 1. セキュリティソフトの設定を開きます。 2. ウイルス対策の中にあるスキャンの除外フォルダ設定を開きます。 3. 除外フォルダに「ゲームプログラムやデータが入っているフォルダ」や「ゲームで使われるデータのキャッシュフォルダ」を追加します。

PCゲームが動かない時のDirectXバージョン確認と対処方法

PCゲームが動かない時は使っているPCのDirectX(Direct3D)の対応バージョンをOSとグラフィックのハードそれぞれ確認してみましょう。 必要なDirectXのバージョンや機能を満たしていないかもしれません。DirectXバージョンの考え方と調べ方、対処方法をまとめます。 OSとグラフィックハードウェアそれぞれのDirectXの対応バージョンがあるのでどちらも満たす Windowsのバージョンで利用できるDirectXのバージョンが決まっています。 グラフィックのハードウェアで実装しているDirectX(Direct3D)のバージョン、機能(機能レベル)があります。 つまり、ゲームの要件に合うようにOSのDirectXバージョンとグラフィックのハードの機能レベルを両方満たしている必要があります。 OSの対応DirectXバージョン OSごとに使えるDirectXが異なります。たとえば、Windows 8でDirectX 12のゲームを遊ぼうとしても対応していません。 DirectX 9.0:主にWindows XP。Windows 2000、Me、98でも利用できる DirectX 9.0c:Windows XP SP2に搭載 DirectX 10.0:Windows Vista以降に搭載 DirectX 10.1:Windows Vista SP1以降でのみ利用できる DirectX 11.0:Windows Vista SP2 + Platform UpdateとWindows 7以降で利用可能 DirectX 11.1:Windows 8以降で利用可能 DirectX 11.2:Windows 8.1でのみ利用可能 DirectX 11.3:Windows 10以降でのみ利用可能 DirectX 12:Windows 10以降でのみ利用可能 DirectX 12 Ultimate:Windows 10バージョン2004以降でのみ利用可能 グラフィックハードウェアで実装しているDirect3Dバージョン グラフィックのハードウェアの機能レベルを確認すると分かります。 Direct3D 11から「機能レベル」という概念 が導入されています。機能レベルは12_2、12_1、12_0、11_1、11_0といったものが振られています。 ハードウェアの機能レベル...

32bitゲームを64bit環境で動かすWindowsの仕組みWOW64

Windowsで動くゲームは昔のWindows95/98用ゲームから始まり、ちょっと前のWindowsまで大半のゲームは32bitコードのプログラムです。 今のWindowsを64bit環境で使っている人が多いと思いますが、そのままでは32bitコードのプログラムは動きません。Windows側で「WOW64」というエミュレーションがされます。 WOW64を理解しておくことで昔のゲームを今のパソコンで動かせる可能性が高まります。 WOW64とは Windows 32bit On Windows 64bitの略。64bitのWindowsで32bitコードのプログラムを動かすエミュレーションの仕組みです。 CPU自体だとx86の64bit化自体は32bitとの互換性が高い状態で拡張されています。加えてWindows側は32bitコードのプログラムの互換性を維持するためにWOW64の仕組みが動いて対応します。 64bit環境で32bitコードのプログラムは以下のような動き、制限があります。 32bitコードのプログラム向けに32bitで扱える仮想メモリ空間が割り当てられる 32bitコードのプログラムと64bitコードのプログラムは1つのプロセス内に混在できない DLLも32bitコードのプログラムは32bitコードのDLLを呼び出す必要がある。32bitコードのプログラムから64bitコードのDLLを呼び出せない Windowsのシステムフォルダやレジストリは32bitコード用に用意されたものにアクセスするようにリダイレクトする 32bitのゲームを64bit環境で動かすときのポイント 古いゲームのインストール先は標準のProgam Filesフォルダにしない 64bit環境では64bitコードのプログラムは C:¥Program Files に、32bitコードのプログラムは C:¥Program Files(x86) にインストールされます。Program Files(x86)やProgram FilesフォルダはWindowsの管理下になっています。 Win95/98向けのような古いゲームをこれらのフォルダにセットアップしようとしても、セットアップが途中で失敗したり、入ってもゲームが動かなかったりします。 古いゲームをセットアップするとき、手動でファイルをコピーし...

Win95/98時代のゲームを今のWindows10/11で遊ぶ・動かす方法

 昔のWindows95/Windows98時代のゲームを今でも遊びたいという人は多いと思います。自分もそうです。 でもWindows10やWindows11で動かそうとしてもそのままではうまく動かないときが多いので対処方法をまとめておきます。 対処方法の一覧 対処方法1:ゲームのインストーラが動かないときはゲームが入っているメディア(FD・CD)から直接コピーする 対処方法2:古い環境でゲームをセットアップして内容をコピーする 対処方法3:DirectX 9.0cをインストールする 対処方法4:互換モードを利用する 対処方法5:DXWndでフルスクリーンゲームをウインドウ化する 対処方法6:DDrawCompatでグラフィックス関連の互換性を上げる 対処方法7:_inmm.dllでCD音源を再生できるようにする 対処方法8:64bit環境ならWOW64の仕組みをふまえて調整する 起動したゲームの例 ぷよぷよ、ぷよぷよ通、バーチャファイターPC、電脳戦機バーチャロン 対処方法1:ゲームのインストーラが動かないときはゲームが入っているメディア(FD・CD)から直接コピーする Windows95/98時代のゲームのインストーラは今のWindowsでうまく動かなかったりします。 ゲームが入っているメディア(FD・CD)を見てみて、ゲームの実行プログラム(EXEプログラム)やゲームのファイルがそのまま見える状態ならコピーしてみましょう。 もしsetup.exeや内容がCABファイルで圧縮されているゲームはセットアップが必要でこの方法は使えません。 手順 1. ゲームが入っているメディア(FD・CD)をエクスプローラで開く 2. ゲームのプログラム(EXE)やDLLファイル、WAVやMIDファイル、TXTファイル、その他ファイルなどが沢山入っているフォルダがあるか確認する 3. 見つかったらCドライブにゲーム名のフォルダを作り、中身をコピーする 4. ゲームのプログラム(EXE)を実行してみて動くか試してみます 対処方法2: 古い環境でゲームをセットアップして内容をコピーする 対処方法1ができないゲームはWindows XPなどの少し前のパソコンがあれば、そこにセットアップしたものをコピーする方法があります。 ただしファイルのコピーだけでは動かず、セットアップでレジス...