【问题标题】:Why won't my program run from the Program Files directory but will from anywhere else?为什么我的程序不能从 Program Files 目录运行,而是从其他任何地方运行?
【发布时间】:2008-12-11 11:27:09
【问题描述】:

我的程序在我的驱动器上除 Program Files 目录 (Windows XP) 之外的任何其他地方都可以正常运行,我以管理员身份登录,因此我拥有驱动器的完全权限。它从 c 的根目录运行良好:windows 目录基本上除了 Program Files 之外的任何其他地方。我已经在 4 台不同的机器 2 XP、2 Vista 上重现了这个问题。

我的程序是一个 C# .Net 2.0 程序。到底是什么问题?

我什至已经将我的整个项目复制到 Program Files 目录中,但我无法从那里调试它,它只是无法运行,根本没有错误。

感谢您的帮助。

【问题讨论】:

  • 您是否验证了它只是这个程序而不是不能在程序文件中运行?你能创建一个在程序文件中运行的小型“虚拟应用程序”吗?
  • 如果你发现了你的问题,你应该关闭这个问题。

标签: .net windows


【解决方案1】:

只是猜测,但如果您的程序试图将数据保存到程序目录,Vista 会阻止这种情况,并将路径动态更改为类似 c:\users[user]\AppData 的路径。也许这会给你一个关于正在发生的事情的提示。

否则我们需要有关您的计划的更多信息来帮助您。

【讨论】:

  • 他在两台装有 XP 的机器上遇到了这个问题。
【解决方案2】:

如果无法调试,您可以随时创建调试日志。有点慢,但最后你会找到程序停止工作的地方。

LogDebug('before 1');
Statement1;
LogDebug('before 2');
Statement2;
LogDebug('before 3');
Statement3;
LogDebug('after 3');

【讨论】:

    【解决方案3】:

    我已在未应用任何组织政策的全新 XP 安装上试用该程序。

    :-(

    【讨论】:

    • 哎哟!您是否尝试过使用同一目录中的 .PDB 文件?
    • 是的,它没有任何区别,我还将调试位置设置为程序文件文件夹,它不会运行,将其更改为其他任何地方,它运行正常。我很困惑。
    • 也许codeproject.com/KB/debug/postmortemdebug_standalone1.aspx 的一些信息可以帮助您查明错误所在。
    【解决方案4】:

    该程序确实从路径中有空格的其他文件夹(例如 Documents 和 Settings)运行,该程序确实在用户配置文件\appdata 文件夹中创建了一个临时文件。

    如果我从某个地方多次运行该应用程序,它将从我刚刚注意到调试选项出现错误,但 VS 不会向我显示问题的位置,我只是收到错误提示。

    test.exe 中 0x79fb96a2 处未处理的异常:0xC0000005:访问冲突读取位置 0x0000000c。

    这个问题可以在 XP 和 Vista 上重现。

    非常感谢

    【讨论】:

    • 将.PDB文件放在同一目录下。你应该得到更好的信息。
    【解决方案5】:

    如果这是你公司的“老大哥”管理的机器,听起来只有“允许”的应用程序才能从“程序文件”运行

    【讨论】:

      【解决方案6】:

      您的程序在其目录中读取了什么?

      为什么要在 user/appdata 中创建临时文件? 对于临时文件,您应该使用 API 来获取当前配置文件的临时文件夹,最好是临时文件名,如下所示:

      string tempFilePath = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());
      

      为了正确地帮助您,我们需要知道您的程序在 init 时应该做什么。

      【讨论】:

        【解决方案7】:

        你有没有运行杀毒软件之类的东西?

        这是什么?

        • 它是否没有运行(可能与操作系统相关)
        • 或者它是否会崩溃(可能是权限)
        • 或者正在运行但没有产生预期的输出? (可能是权限)

        您检查过事件日志吗?

        尝试从批处理文件中调用它,看看会发生什么。

        嗯,有人想在他们的机器上试用他的 .exe 吗??

        【讨论】:

          【解决方案8】:

          对此很抱歉,但我发现了问题,我有一些垃圾代码正在寻找正在传递的参数,包括“文件”,而“程序文件”中的文件强制程序进入没有 gui 的命令行模式。真的很抱歉把你的时间浪费在这样一个微不足道的问题上,你生活和学习!

          谢谢大家。

          【讨论】:

            猜你喜欢
            • 2012-04-16
            • 2022-01-27
            • 1970-01-01
            • 1970-01-01
            • 2011-04-05
            • 1970-01-01
            • 2021-03-13
            • 2011-07-29
            • 1970-01-01
            相关资源
            最近更新 更多