在启动时启动应用程序时读取文件

时间:2017-08-06 17:09:32

标签: c++ windows inno-setup

我最近为Windows创建了一个c ++程序,它在启动时会读取一些存储用户配置的文件,如果它是程序第一次运行,它会存储用户设置的选项并创建文件。当我在visual studio中调试它时,它按预期工作。

所以我开始创建安装设置,我使用了Inno Setup。我的程序需要在启动时启动,所以我使用以下代码,这是来自inno网站http://www.jrsoftware.org/iskb.php?startwithwindows。我的问题是,当程序在启动时启动时,这些文件不会被读取或创建,但如果我关闭程序并使用桌面图标启动程序,它会读取并创建de文件。

所以我的问题是Inno脚本中有什么东西可以让它读取文件吗?可能是fstream类的问题?,是否有代码解决方案

提前致谢。

我遵循迈克尔的建议,我使用了带有漫游子文件夹的APPDATA文件夹,现在程序读取配置文件并按预期运行,感谢您的帮助!。

1 个答案:

答案 0 :(得分:1)

从上面的注释中,您说您将配置文件存储在与.exe相同的文件夹中,并且您的应用程序能够在从Visual Studio运行时创建文件,但在安装到"程序时则不能文件(x86)"文件夹或C:/ root。

听起来您遇到了UAC(用户访问控制)权限问题。 "程序文件(x86)"至少文件夹,我相信C:/(root)也需要管理员权限才能写入。 Windows XP及更早版本的情况并非如此;它是现代版本。您可能以管理员身份运行Visual Studio而不知道它,并在安装时允许管理员权限,但该应用程序不会以管理员身份运行,因此无法写入这些位置。

尝试以管理员身份运行(已安装的)应用程序(右键单击该文件并选择"以管理员身份运行")。如果它可以工作,那么你去:你要么必须以管理员的身份运行它,如果你希望它能够将配置文件存储在与.exe相同的目录中,要么(更好的解决方案)将配置文件存储在适当命名的%APPDATA%子目录,运行应用程序的用户始终可以在没有管理员权限的情况下写入。