SHGetSpecialFolderPath,如何从 32 位应用程序访问 64 位 CSIDL

发布于 2024-08-02 05:20:43 字数 388 浏览 9 评论 0原文

有没有办法让在 64 位系统上运行的 32 位应用程序访问 64 位应用程序的默认文件夹?

例如,在 32 位应用程序中使用带有 CSIDL_PROGRAM_FILES 的 SHGetSpecialFolderPath 将返回“C:\Program Files (x86)”。如果从 64 位应用程序使用相同的调用,我将得到“C:\Program Files”。有没有办法获取来自 32 位应用程序的“C:\Program Files”?

此处的相关问题没有帮助 SHGetFolderPath() 32 位与 64 位在调用 SHGetSpecialFolderPath 之前也不会抑制 wow64 文件系统重定向

Is there a way from a 32bit application running on a 64bit system to have access to the default folders for 64bit applications?

For example, using SHGetSpecialFolderPath with CSIDL_PROGRAM_FILES from a 32bit application returns "C:\Program Files (x86)' If the same call was used from a 64bit application, I would get "C:\Program Files". Is there a way of getting that "C:\Program Files" from a 32bit application?

A related question here does not help SHGetFolderPath() 32 bit vs 64 bit nor does supressing the wow64 filesystem redirection before calling SHGetSpecialFolderPath

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一个人的夜不怕黑 2024-08-09 05:20:43

回答我自己的问题,似乎 SHGetSpecialFolderPath 是不可能的。在 Vista 及更高版本中,使用替换函数 SHGetKnownFolderPath 允许使用 FOLDERID_ProgramFilesX64

Answering my own question, it seems it is not possible with SHGetSpecialFolderPath. In Vista and later, using the replacement function SHGetKnownFolderPath allows it with FOLDERID_ProgramFilesX64

姐不稀罕 2024-08-09 05:20:43

我相信拥有单独文件夹的全部原因是为了防止 32 位和 64 位应用程序混合。因此,您不需要看到属于与您的应用程序不同位数的文件夹。

您可能有一个很好的理由,但我在您发布的问题中没有看到任何理由。

I believe the whole reason for having separate folders was to prevent 32 and 64 bit applications from mixing. Therefore, you shouldn't need to see a folder belonging to a different bitness from your application.

You may have a very good reason, but I don't see one in your question as posted.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文