Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在应用程序启动时读取文件 我最近创建了一个Windows的C++程序,当它启动时,它读取一些存储用户配置的文件,如果程序是第一次运行,则存储用户设置的选项并创建文件。当我在VisualStudio中调试它时,它按预期工作_C++_Windows_Inno Setup - Fatal编程技术网

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

在应用程序启动时读取文件 我最近创建了一个Windows的C++程序,当它启动时,它读取一些存储用户配置的文件,如果程序是第一次运行,则存储用户设置的选项并创建文件。当我在VisualStudio中调试它时,它按预期工作,c++,windows,inno-setup,C++,Windows,Inno Setup,所以我创建了一个安装程序,我使用了Inno安装程序。我的程序需要在启动时启动,所以我使用以下代码,这是来自inno网站的。我的问题是,当程序在启动时启动时,这些文件不会被读取或创建,但如果我关闭程序并使用桌面图标启动程序,它会读取并创建de文件 所以我的问题是Inno脚本中是否有允许它读取文件的内容?fstream类可能有问题?是否有代码解决方案 提前谢谢 我遵循Michael的建议,使用了APPDATA文件夹和Roaming子文件夹,现在程序读取配置文件并按预期运行,谢谢您的帮助 从上面的评论

所以我创建了一个安装程序,我使用了Inno安装程序。我的程序需要在启动时启动,所以我使用以下代码,这是来自inno网站的。我的问题是,当程序在启动时启动时,这些文件不会被读取或创建,但如果我关闭程序并使用桌面图标启动程序,它会读取并创建de文件

所以我的问题是Inno脚本中是否有允许它读取文件的内容?fstream类可能有问题?是否有代码解决方案

提前谢谢


我遵循Michael的建议,使用了APPDATA文件夹和Roaming子文件夹,现在程序读取配置文件并按预期运行,谢谢您的帮助

从上面的评论中,您说您正在将配置文件存储在与.exe相同的文件夹中,并且您的应用程序在从Visual Studio运行时可以创建文件,但在安装到“Program files(x86)”文件夹或C:/root时则无法创建文件

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


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

代码解决方案?您现在在代码方面有问题吗,还是需要一个问题?请给出你在C++应用程序中做的更多细节。你想把什么文件写入到目录中?应用程序在运行时是否具有对文件/目录的适当权限?如果使用相对路径,请确保当前工作目录正确。感谢您的响应,我没有使用相对路径,文件已创建并存储在.exe的同一文件夹中。当我安装我的程序时,我将其存储在(x86)文件夹中,但我认为这可能是权限问题,我将其安装在C://中,但不读取文件的问题仍然存在。如果Michael的回答解决了您的问题,您应该通过单击勾号来接受它。可能不是Visual Studio以管理员身份运行,但是该程序在其清单中设置了requireAdministrator选项,因为OP说它在桌面上运行时可以工作。IIRC,当通过运行键或启动文件夹启动程序时,requireAdministrator选项将被静默忽略。正如您所说,解决方案是不将文件存储在可执行文件旁边。根据场景的不同,ProgramData文件夹(又名全局应用程序数据文件夹,又名CommonAppDataFolder)可能比用户的应用程序数据文件夹更合理