gpt4 book ai didi

c++ - 无法访问 "Program Files"中的 INI 文件

转载 作者:可可西里 更新时间:2023-11-01 14:41:03 25 4
gpt4 key购买 nike

我编写了这个 C++ 应用程序,它需要检查一个 INI 文件(“preference.ini”),并最终修改它(例如,如果用户不想再看到介绍表格)。我在 WinXP 中创建它,它在我编译它的系统上运行良好(在许多位置,包括“程序文件”)。

问题:

  1. 在 Win 7 中,如果我将完整的程序文件夹放在“C”下,它工作正常:\”(例如“C:\MyProgram”),但如果我把它放在“C:\Program Files (x86)\MyProgram”,它只是检索一些神秘数据(我的 INI 文件中不存在的值)。当我更改一些设置并将它们保存到文件时,它(显然)保存更改(没有错误,但是当我打开文件时更改不存在...
  2. 我在另一个 WinXP 系统(不是我编译它的系统)的系统上遇到了一些类似的问题。

我在运行时使用“getcwd”来定义路径,我验证它是正确的,即使在“Program Files (x86)”下也是如此:

char currentPath[MAXPATH];
getcwd(currentPath, MAXPATH);
std::string licensePath(currentPath);
licensePath.append("\\dat\\preference.ini");'

有什么想法吗?预先感谢您的帮助。

最佳答案

答案正如@Kirill 已经说过的那样 - Win7 不会让您将数据写入程序文件,除非您拥有高于正常权限的权限(以管理员身份运行)。在这种情况下,它可能会重定向您的文件写入,以便它们仍然可以正常工作,但数据本身并未存储在 Progam 文件中。

补充一下他的回答:一般来说(除非您想以管理员身份运行您的应用),您不应将任何程序数据写入 Program Files 文件夹。

应用程序设置应存储在其中一个 AppData 文件夹中。您可以通过转到开始菜单搜索框 (Vista/Win7) 并键入 %appdata% 来手动获取用户的应用程序数据。

要在您的代码中查找此位置,请使用 SHGetFolderPath使用 CSIDL_APPDATA(当前用户)或 CSIDL_COMMON_APPDATA(所有用户)。

关于c++ - 无法访问 "Program Files"中的 INI 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3192092/

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