2009-08-20 143 views
2

有沒有辦法從運行在64位系統上的32位應用程序訪問64位應用程序的默認文件夾?SHGetSpecialFolderPath,如何從32位應用程序訪問64位CSIDL

例如,使用SHGetSpecialFolderPath與CSIDL_PROGRAM_FILES從32位應用程序返回「C:\ Program Files文件(x86)的」如果同一個電話是從64位應用程序中使用,我會得到‘C:\ Program Files文件’有?得到的是「C:\ Program Files文件」的方式,從32位應用程序

這裏一個相關的問題並沒有幫助SHGetFolderPath() 32 bit vs 64 bit也不調用SHGetSpecialFolderPath

回答

2

回答我的問題之前,不supressing的WOW64文件系統重定向,似乎SHGetSpecialFolderPath是不可能的。在Vista和更高版本中,使用替換函數SHGetKnownFolderPath允許使用FOLDERID_ProgramFil esX64

+0

請參閱[已知文件夾]上的MSDN文章(http://msdn.microsoft.com/zh-cn/library/bb776911%28v=vs.85%29.aspx) – MrBry 2011-04-20 11:27:24

+0

如果應用程序是FOLDERID_ProgramFilesX64,則不起作用64位操作系統上的32位。但是,環境變量「ProgramFiles」起作用。 – 2017-08-12 03:24:10

1

我相信有單獨的文件夾的全部原因是爲了防止32位和64位應用程序混合。因此,您不需要在應用程序中看到屬於不同位的文件夾。

您可能有一個很好的理由,但我沒有看到您發佈的問題中有一個。

+0

32位應用程序需要爲32位和64位系統上的32位和64位應用程序執行安裝相關任務。完全相同的二進制需要在所有系統中使用(否則我們可以簡單地重新編譯)。這不是我們可以更改的要求,不幸的是 – 2009-08-21 16:47:59

+0

當微軟試圖隱藏所有這些東西並且破解時,微軟真的搞砸了。獲取64位Program Files forlder的明顯原因是要找到一個64位程序!即你可能想要運行它。 32位程序沒有理由不能訪問此文件夾。也沒有理由甚至應該有一個單獨的Program Files文件夾,但那個錯誤在過去。 – swpalmer 2014-03-14 16:06:20