Windows10

32bitソフトの64bit環境での動作

ファイルシステムリダイレクタ

%windir%\ System32ディレクトリは、64ビットWindows上の64ビットアプリケーション用に予約されています。 DLLの64ビットバージョンが作成されたとき、ほとんどのDLLファイル名は変更されなかったため、DLLの32ビットバージョンは別のディレクトリに保存されます。 WOW64は、ファイルシステムリダイレクタを使用してこの違いを隠します。

ほとんどの場合、32ビットアプリケーションが%windir%\ System32、%windir%\ lastgood \ system32、または%windir%\ regedit.exeにアクセスしようとするたびに、アクセスはアーキテクチャ固有のパスにリダイレクトされます。

注意

これらのパスは参照用にのみ提供されています。 互換性のために、アプリケーションはこれらのパスを直接使用しないでください。 代わりに、以下で説明するAPIを呼び出す必要があります。
元のパス32ビットx86プロセスのリダイレクトパス32ビットARMプロセスのリダイレクトパス
%windir%\System32%windir%\SysWOW64%windir%\SysArm32
%windir%\lastgood\system32%windir%\lastgood\SysWOW64%windir%\lastgood\SysArm32
%windir%\regedit.exe%windir%\SysWOW64\regedit.exe%windir%\ SysArm32\regedit.exe

 

アクセスによりシステムがUACプロンプトを表示する場合、リダイレクトは発生しません。 代わりに、要求されたファイルの64ビットバージョンが起動されます。 この問題を回避するには、SysWOW64ディレクトリを指定してリダイレクトを回避し、32ビットバージョンのファイルへのアクセスを確保するか、UACプロンプトが表示されないように管理者権限で32ビットアプリケーションを実行します。

** Windows Server 2003およびWindows XP:** UACはサポートされていません。

特定のサブディレクトリはリダイレクトを免除されています。 これらのサブディレクトリへのアクセスは、%windir%\ SysWOW64にリダイレクトされません。

%windir%\ system32 \ catroot
%windir%\ system32 \ catroot2
%windir%\ system32 \ driverstore
%windir%\ system32 \ drivers \ etc
%windir%\ system32 \ logfiles
%windir%\ system32 \ spool

** Windows Server 2008、Windows Vista、Windows Server 2003、およびWindows XP:**%windir%\ system32 \ driverstoreがリダイレクトされます。

32ビットシステムディレクトリの名前を取得するには、64ビットアプリケーションでGetSystemWow64Directory2関数(Windows 10バージョン1511)またはGetSystemWow64Directory関数を使用する必要があります。

アプリケーションは、SHGetKnownFolderPath関数を使用して、%ProgramFiles%ディレクトリ名を決定する必要があります。

Windows Server 2003およびWindows XP:アプリケーションは、SHGetSpecialFolderPath関数を使用して%ProgramFiles%ディレクトリ名を決定する必要があります。

アプリケーションは、Wow64DisableWow64FsRedirectionWow64EnableWow64FsRedirection、およびWow64RevertWow64FsRedirection関数を使用してWOW64ファイルシステムリダイレクターを制御できます。 ファイルシステムのリダイレクトを無効にすると、呼び出しスレッドによって実行されるすべてのファイル操作に影響するため、1つのCreateFile呼び出しに必要な場合にのみ無効にし、関数が戻った直後に再度有効にする必要があります。 長期間ファイルシステムのリダイレクトを無効にすると、32ビットアプリケーションがシステムDLLをロードできなくなり、アプリケーションが失敗します。

32ビットアプリケーションは、%windir%\ System32を%windir%\ Sysnativeに置き換えることにより、ネイティブシステムディレクトリにアクセスできます。 WOW64は、ファイルシステムがアクセスをリダイレクトしてはならないことを示すために使用される特別なエイリアスとしてSysnativeを認識します。 このメカニズムは柔軟で使いやすいため、ファイルシステムのリダイレクトをバイパスするための推奨メカニズムです。 64ビットアプリケーションは、実際のディレクトリではなく仮想ディレクトリであるため、Sysnativeエイリアスを使用できないことに注意してください。

Windows Server 2003およびWindows XP:Windows Vista以降、Sysnativeエイリアスが追加されました。

参考記事:File System Redirector

人気の記事をご紹介

カテゴリーで絞る

  • この記事を書いた人

山本

はじめまして。「山本まこと」と申します。 フリーランスでシステムエンジニアを現役でさせて頂いています。 業務内容はシステム設計、プログラム作成等何でさせて頂いています。 特にサーバ構築、業務端末(パソコン)の構築の仕事を多くさせて頂いています。 サーバ構築はOSが24時間止まらず高パフォーマンスで動作する用に設定したり セキュリティ対策(脆弱性)を実施することやデータベースの構築も実施します。 業務端末(パソコン)の構築は業務アプリケーションが快適に動作するようOSの設定を実施します。 パソコンは日進月歩で性能はどんどん向上しています。 またマイクロソフトのOSもWinows7からWindows10へ移行する段階を迎えています。 Windows10においては、使い勝手はとても良くなっていますが、自動化が進み、一度不調になってしまうと設定変更での修復するにはコツが必要です。 また、マシンスペックについてもある程度のものが要求されます。 このホームページでは、皆さんがパソコンを快適に使っていただけるようにお役に立てたらと思い、記事を書かせて頂いています。

-32bitソフトの64bit環境での動作
-, , , , , ,

© 2021 幸せになれるPCライフ