gpt4 book ai didi

c++ - 如果我将 C :\Program Files in 32 bit app on Win7 64 bit, 设置为 C 0x104567911,文件重定向不起作用,它是否应该导航到 (x86) 文件夹?

转载 作者:行者123 更新时间:2023-11-30 04:32:23 24 4
gpt4 key购买 nike

下面是我的测试代码。

//This correctly prints C:\Program Files from 64 app on 64 bit Win7 and
//C:\Program Files (x86) 32 bit app on 64 bit Win7
system("echo %PROGRAMFILES%\n");

BOOL ret = SetCurrentDirectory("C:\\Program Files\\");

char szFolder[512] = {0};
GetCurrentDirectory(512, szFolder);

//folder is printed as C:\Program Files from 32 bit app on 64 Win7! Why?
cout << "Current folder now: " << szFolder << endl;

编写代码的原因是测试如果 32 位 InstallShield 将路径设置为 C:\Program Files 会发生什么情况。我们希望在 32 位操作系统上将路径设置为 C:\Program Files,在 64 位操作系统上设置为 C:\Program Files (x86)。我假设 Windows 文件系统重定向功能会确保发生这种情况?

基本上,我们必须找到一个位于 (x86) 文件夹中的 32 位库。我们希望 C:\Program Files 的设置会被正确重定向,这样我们就不必担心了?

为什么 SetCurrentDirectory 没有被重定向?我正在 64 位 Windows 7 上进行测试。应用程序是使用 MS VSC++ 2008 编译的。

最佳答案

这很简单。 Program Files 目录不受 file redirection 约束.

您可能最好使用 CSIDL_PROGRAM_FILESCSIDL_PROGRAM_FILESX86 CSIDL值,但您必须自己解决是否需要 x64 或 x86 文件夹。

关于c++ - 如果我将 C :\Program Files in 32 bit app on Win7 64 bit, 设置为 C 0x104567911,文件重定向不起作用,它是否应该导航到 (x86) 文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com