2009-08-20 46 views
2

64bitシステムで動作する32bitアプリケーションから、64bitアプリケーション用のデフォルトフォルダにアクセスする方法はありますか?SHGetSpecialFolderPath、32bitアプリケーションから64bit CSIDLにアクセスする方法

たとえば、32ビットアプリケーションのCSIDL_PROGRAM_FILESでSHGetSpecialFolderPathを使用すると、「C:\ Program Files(x86)」が返されます。64ビットアプリケーションから同じ呼び出しが使用された場合、「C:\ Program Files」と表示されます。 ?「C:\プログラムファイル」となっての方法32ビットアプリケーションから

ここに関連する質問がSHGetFolderPath() 32 bit vs 64 bitを助けないも自分の質問に答えるSHGetSpecialFolderPath

答えて

2

を呼び出す前に、WOW64ファイルシステムのリダイレクトをsupressingんが、それはそうですSHGetSpecialFolderPathでは不可能です。Vista以降では、置換機能SHGetKnownFolderPathを使用すると、FOLDERID_ProgramFil esx64

+0

[Known Folders](http://msdn.microsoft.com/en-us/library/bb776911%28v=vs.85%29.aspx)のMSDN資料を参照してください。 – MrBry

+0

FOLDERID_ProgramFilesX64は、アプリケーションが64ビットOSで32ビット。ただし、環境変数 "ProgramFiles"が機能します。 –

1

私は、別々のフォルダを持っている理由は、32ビットと64ビットのアプリケーションが混在しないようにするためだと思います。したがって、アプリケーションとは異なるビット数のフォルダを参照する必要はありません。

非常に良い理由があるかもしれませんが、あなたの質問には投稿されたものが表示されません。

+0

32ビットおよび64ビットシステム上の32ビットおよび64ビットアプリケーションのインストールに関連するタスクを実行する必要がある32ビットアプリケーション用です。まったく同じバイナリをすべてのシステムで使用する必要があります(それ以外の場合は単純に再コンパイルできます)。これは私たちが変更できる要件ではありません。残念ながら –

+0

マイクロソフト社は、これらすべてのものを隠して物事をハックしようとしたときに本当に骨が折れました。 64ビットプログラムファイルを入手する明白な理由は、64ビットプログラムを見つけることです!私。それを実行したいかもしれません。 32ビットプログラムがこのフォルダにアクセスしてはならない理由はありません。また、別のProgram Filesフォルダが必要な理由もありませんが、その過ちは過去です。 – swpalmer

関連する問題