小编Kar*_*yan的帖子

32位应用程序如何在Windows Vista 64位上找到64位Program Files目录的位置?

我正在努力解决如何从32位应用程序确定64位Windows Vista上64位Program Files目录的位置的问题.

要求SHGetKnownFolderPath(FOLDERID_ProgramFilesX64)不要退货.该MSDN文章KNOWNFOLDERID还指出,与此特定的呼叫FOLDERID_ProgramFilesX64不支持32位应用程序.

我想尽可能避免硬编码"C:\ Program Files"的路径.做一些事情GetWindowsDirectory(),从返回值中提取驱动器并向其添加"\ Program Files"也不具吸引力.

32位应用程序如何从64位Windows Vista正确获取文件夹的位置?

背景

我们的应用程序有一个服务组件,它应该根据来自用户会话的组件的请求启动其他进程.启动的应用程序可以是32位或64位.我们通过CreateProcessAsUser()从启动用户会话进程传入令牌来实现此目的.对于调用CreateProcessAsUser,我们通过CreateEnvironmentBlock()API 创建一个环境块.问题是CreateEnvironmentBlock(),使用用户会话应用程序的令牌,使用ProgramW6432 ="C:\ Program Files(x86)"创建一个块,这对于64位应用程序来说是一个问题.我们需要用适当的值覆盖它.

vista64 32bit-64bit

8
推荐指数
1
解决办法
5778
查看次数

标签 统计

32bit-64bit ×1

vista64 ×1