如何在 32 位应用程序中获取 64 位系统文件夹?

joe*_*joe 4 windows winapi special-folders 32bit-64bit known-folders

在 32 位应用程序中,我必须将文件复制到 64 位系统文件夹
C:\Windows\System32\而不是C:\Windows\SysWOW64\

为此,我尝试使用SHGetKnownFolderPath带有参数FOLDERID_ProgramFilesX64(GUID:6D809377-6AF0-444b-8957-A3773F02200E)的 WinAPI 函数获取文件夹。

但不幸的是,这是不允许的(如备注部分所述)并且函数结果正确是“找不到文件”。

有没有办法做到这一点?

Rem*_*eau 5

您请求的是PROGRAM FILES 文件夹,而不是SYSTEM文件夹。看看FOLDERID_SystemFOLDERID_SystemX86代替。

或者,使用FOLDERID_Windows获取 Windows 安装文件夹,然后将特殊SysNative别名附加到它的末尾,让文件系统重定向器根据文档为您找到实际文件夹:

32 位应用程序可以通过将%windir%\Sysnative替换为 %windir%\System32来访问本机系统目录WOW64 将 Sysnative 识别为特殊别名,用于指示文件系统不应重定向访问。该机制灵活且易于使用,因此是绕过文件系统重定向的推荐机制。请注意,64 位应用程序不能使用 Sysnative 别名,因为它是一个虚拟目录而不是真实目录。