【问题标题】:MFC C++: TODO <file description> has stopped workingMFC C++:TODO <文件描述> 已停止工作
【发布时间】:2011-07-12 07:16:09
【问题描述】:

我编写了一个程序,它试图在 C:\windows\ 目录中写入一个文件。我已经在几台装有 winXP、win7(64 位和 32 位)的 PC 上测试了该程序。但是当我将它安装在客户端的 PC 中时,它崩溃并显示以下消息:TODO(文件描述)已停止工作 如果有朋友知道任何解决方案,请回复我。

【问题讨论】:

  • 您是否制作了该程序的发布版本?
  • @John Paul:是的,该程序已发布版本
  • 如果我们不能检查代码,我们怎么知道解决方案?你不能只是打电话给你父亲说“我的车停了,我该怎么办?”。原因包括电池坏了、汽油没了、机油没了、过热、火花塞坏了、刺穿、方向盘被盗、汽车被盗、内部定时炸弹、试图开车上山、交通堵塞、乘客太重等等等等。参见什么意思?
  • @phresnel:感谢你 Phresnel 的宝贵意见。

标签: c++ windows file mfc system


【解决方案1】:

解决方法是不要写入C:\Windows 文件夹。您不是为 Microsoft Windows 团队工作。

【讨论】:

  • @rahhh:真不幸。正如 Micrsoft 的 Raymond Chen 常说的,“我们相信程序员会做正确的事”。只是现在他们才更加积极地执行旧规则。
【解决方案2】:

你给你的客户一个“TODO:...”产品真是太棒了?请编辑版本信息以反映您的产品名称~

至于崩溃场景:

  • 检查您的应用程序是否真的需要管理员权限,如果是,请从“以管理员身份运行”开始,看看它是否解决了问题。
  • 在“停止工作对话框”或 Windows 事件查看器中查看问题详细信息。在这两者中,您都可以看到异常代码(如 0xC0000005)和 DLL 名称。为此,您应该通过在链接器设置中启用 /DEBUG 标志来启用 PDB 文件生成(这与编译器设置中的 _DEBUG 宏相同!)。
  • 放置一些文件记录或消息框(临时),然后查看程序正确运行的位置。是的,您需要做一些更改、构建并再次提供给您的客户(请不要将“TODO”作为产品名称 - 保持专业!)。

【讨论】:

    【解决方案3】:

    有几个可能的原因,其中没有写访问权限(可能运行程序的用户没有对 C:\Windows 文件夹的写访问权限。尝试在该位置手动创建文件。)或错误的编程。

    在任何情况下,您都有一些事情可以尝试找出问题所在。如果无法调试,您应该将代码的合理部分放在try catch 块中(例如您编写文件的部分)。如果发现错误,您可以输出有关错误所在部分的消息。您还应该包含logging solution 并在代码的各个位置添加日志。安装更新后的应用程序后,如果出现错误,请在日志文件中查找代码停止的位置。

    【讨论】:

      【解决方案4】:

      是否有可能您关闭了 UAC,但您的客户端却没有?或者,客户的用户是否没有管理权限?不允许用户进程写入 c:\Windows 文件夹。如果是这种情况,尝试创建文件会引发异常。

      创建数据文件的正确位置是:

      1. 用户文件夹下的应用程序数据,如果文件是每个用户的。
      2. 所有用户 (XP) 下的 ProgramData (Win7) 或应用程序数据,如果文件是每个应用程序(日志左右)。

      【讨论】:

      • 我曾尝试以管理员用户身份在客户端 PC 上运行该程序,但结果相同。
      • @rahhh,只是为了确定一下-您是否尝试与属于管理员组成员的用户一起运行它,或者您是否使用“以管理员身份运行”来运行程序?如果是 Vista/7/2008 站,您应该同时使用两者 - 使用本地管理员用户,并以管理员身份运行。
      【解决方案5】:

      除了权限问题之外,导致您的应用程序崩溃的第一件事是未在您的客户端 PC 上安装运行时。您的安装包是否安装了 MSVC 运行时?如果没有,您是否在该 PC 上安装了 MSVC 可再发行运行时?

      【讨论】:

        【解决方案6】:

        “我编写了一个程序,它试图在 C:\windows\ 目录中写入一个文件。”

        那是你的问题。不要那样做。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-28
          • 1970-01-01
          相关资源
          最近更新 更多