【问题标题】:Simple C++ ofstream project not working when deployed简单的 C++ ofstream 项目在部署时不起作用
【发布时间】:2020-02-27 18:01:31
【问题描述】:

我制作了一个非常简单的 C++ 程序,它创建了一个 .sav 文件,其中写有“嘿”。当我在 Visual Studio 2019 中运行该程序时,它运行良好,但是在我的计算机上部署我的程序后,当我启动部署的 .exe 文件时,它什么也没做。

我在 Windows 10 上使用 Visual Studio 2019。我的程序和我的安装文件都设置为发布和 x86 模式,我的程序设置为静态链接(我将程序的运行时库更改为 Multi -线程(/MT))。 我按照本文的说明部署了我的项目:https://docs.microsoft.com/en-us/cpp/ide/walkthrough-deploying-your-program-cpp?view=vs-2019

在构建安装文件并启动创建的 .msi 安装程序后,安装的程序甚至不会在启动后创建 .sav 文件。

这是我的代码:

#include <fstream>

int main()
{

std::ofstream Yes;
Yes.open("Sc.sav");
Yes << "Hey" << std::endl;
Yes.close();

return 0;
}

我做错了什么?

提前致谢。

【问题讨论】:

  • 您是否有权(您是管理员)将文件保存在特定文件夹下? cerr &lt;&lt; "Error: " &lt;&lt; strerror(errno); 会打印什么?
  • 在写入文件之前,您没有检查open() 是否成功。而且您使用的是相对文件路径,因此文件可能不会在您期望的位置创建。
  • 它在已发布和在 Visual Studio 程序中打印“错误:无错误”。
  • 部署的程序以管理员身份运行良好!但是如何在不始终以管理员身份运行程序的情况下使其工作?
  • 创建一个快捷方式以使用非管理员用户可以实际写入的当前目录运行此应用程序,例如C:\Users\%username%\Documents

标签: c++ visual-c++ ofstream setup-deployment


【解决方案1】:

所以,感谢您的 cmets,我发现了它是什么: 我的应用程序需要管理员权限才能创建文件,因此我必须向用户请求管理员权限,或者将我的文件保存在我不需要这些权限的位置。

我选择了第二种解决方案,并将我的文件保存在 C:\AppData\Roaming 目录中,程序可以在其中保存文件而无需请求许可。

再次感谢您的帮助和关注。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多