如何检索 system32 或 SysWOW64 的正确路径?
我有一个 32 位进程,可以在 32 位或 64 位 Windows 中运行。因此,自然地,如果进程尝试访问文件 c:\windows\system32\file.ext
,它将被重定向到 c:\windows\SysWOW64\file.ext
代码>.到目前为止一切顺利 - 我不想禁用重定向。
我的问题是我的进程实际上并没有访问文件 - 相反,它只是获取其路径并将其写入文本文件,并且我希望该文本文件能够读取64 位系统上为 SysWOW64
,32 位系统上为 system32
。我怎样才能做到这一点?
I have a 32-bit process that can run either in 32-bit or 64-bit Windows. So, naturally, if the process tried to access the file c:\windows\system32\file.ext
, it would be redirected to c:\windows\SysWOW64\file.ext
. So far so good - I don't want to disable the redirection.
My problem is that my process doesn't actually access the file - instead it just takes its path and writes it into a text file, and I want that text file to read SysWOW64
on a 64-bit system, and system32
on a 32-bit system. How can I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下代码将返回正确的系统目录 (system32\syswow64):
在 x86 上,您将获得 %windir%\System32
在 X64 上你会得到 %windir%\SysWow64
希望这有帮助
The following code will return the correct system directory (system32\syswow64):
On x86 you'll get %windir%\System32
On X64 you'll get %windir%\SysWow64
Hope this is helpful
如果我理解正确,您可以使用 SHGetSpecialFolderPath 将 CSIDL_SYSTEMX86 传递给 csidl 参数。 有效的 csidl 指出 32 位进程将得到:
最佳问候
if I understood it correctly, you can use SHGetSpecialFolderPath passing CSIDL_SYSTEMX86 to the csidl parameter. The documentation for the valid csidl's states that a 32 bit process will get:
Best regards
System32 C:\Windows\System32 64 位文件的 Windows 系统文件夹(系统目录)
SysWOW64 C:\Windows\SysWOW64 32 位文件的 Windows 系统文件夹(系统目录)
Program Files C:\Program Files 64 位程序文件的文件夹
Program Files (x86) C:\Program Files (x86) 32 位程序文件的文件夹
System32 C:\Windows\System32 Windows System folder (system directory) for 64-bit files
SysWOW64 C:\Windows\SysWOW64 Windows System folder (system directory) for 32-bit files
Program Files C:\Program Files Folder for 64-bit program files
Program Files (x86) C:\Program Files (x86) Folder for 32-bit program files