java.exeがcygwinから見えないのに、コマンドプロンプトから見えるのはなぜですか?


回答:


14

Windows 8/7 / Vistaのx64エディションでは、C:\ Windows \ System32フォルダーの内容はアプリケーションのビット数に依存します。

64ビットアプリケーション(Windowsコマンドプロンプトなどcmd.exe)の場合、ファイルシステムのリダイレクトはありません:(
C:\Windows\System32ソフトウェア内)-> C:\Windows\System32(ディスク上)。
したがって、C:\ Windows \ System32フォルダーには、64ビットアプリケーションの観点から、64ビットDLLおよびEXEファイルが含まれています。

bash.exeWindows x64でWoW64サブシステムを介して実行される32ビットアプリケーション(Cygwin など)の場合、ファイルシステムには
C:\Windows\System32(ソフトウェア内)-> C:\Windows\SysWOW64(ディスク上)の2つのリダイレクトがあります。
C:\Windows\Sysnative(ソフトウェア内)-> C:\Windows\System32(ディスク上)。
したがって、C:\ Windows \ System32フォルダーには、32ビットアプリケーションの観点から、32ビットDLLおよびEXEファイルが含まれています。

java*.exe32ビットアプリケーション(Cygwinなど)から64ビットアプリケーションおよびDLLファイル(など)にアクセスbash.exeする場合は、C:\Windows\Sysnativeパスまたは/cygdrive/c/Windows/SysnativeCygwin表記を使用する必要があります。

(これは更新され拡張された回答です)


はい、あります:Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 SYSTEM SYSTEM 188320 Mar 7 04:43 java.exe
Chloe

なぜそうするのですか?DOSプロンプトからsysnativeを見ることができません。
クロエ

2
したがって、cygwinのbash.exeは32ビットアプリケーションとして実行され、そのコンテキストでC:\ Windows \ System32はC:\ Windows \ SysWOW64(java *ファイルのないフォルダー)にマップされます。Windowsコマンドプロンプト(cmd.exe)は64ビットアプリケーションとして実行されるため、真のC:\ Windows \ System32を確認できます。C:\ Windows \ sysnativeを使用して、32ビットアプリケーションから真のsystem32ディレクトリにアクセスします。このトピックに関するさらに詳しい情報:msdn.microsoft.com/en-us/library/windows/desktop/...
ミハイルKupchik

うわー、それは完全に後方で混乱している!
クロエ

1
はい、64ビットシステムDLLおよびEXEファイル用に\ Windows \ system64ディレクトリを作成する必要がありましたが、残念ながらSystem32ディレクトリに64ビットファイルがあり、ファイルシステムのリダイレクトが厄介です。
ミハイルクプチク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.