2009-08-20 201 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

相关问题