安装在Program Files

时间:2016-11-24 11:11:28

标签: c# .net wpf exception visual-studio-2015

我看到一些.NET应用程序的奇怪行为,我很难理解。我有一个用C#编写的应用程序,目标是.NET 4.5.2,我试图将其用于测试目的。在Visual Studio(2015)下运行时,应用程序运行良好,部署到C:\ Program Files(x86)时也运行一段时间。但是,今天我尝试再次运行该应用程序,它立即抛出一个可怕的System.ComponentModel.Win32Exception(操作成功完成)。

应用程序在Visual Studio调试器下仍可正常运行,如果我从Visual Studio发行目录手动运行它,也可以正常运行。有趣的是,如果我要么应用程序运行正常:

  • 重命名程序文件目录中的可执行文件(例如,从x.exe到y.exe)
  • 重命名程序文件中的目录

到目前为止我能想到的唯一事情是:

  • 我机器上的其他东西导致了它的问题(也许是反病毒?)。虽然我在日志中找不到任何支持这一点的内容。
  • Windows是如何缓存旧版本的可执行文件并使用它?我不确定这是否真的发生了,但这只是一个想法。

我查看了事件查看器并查看了与此相关的错误,但是日志条目没有提供有关异常中给出的内容的任何额外信息。

非常感谢任何建议。

编辑: 我尝试将VS调试器附加到进程,但它没有给我任何额外的信息。但是,我刚刚更改了项目调试设置下的启动操作以运行位于程序文件中的可执行文件,并引发了一个不同的异常:“托管调试助手'FatalExecutionEngineError'在'C:\ Program Files(x86)中检测到问题。 ..“

其他信息:运行时遇到致命错误。在线程0x1d00上,错误的地址为0x010cf00c。错误代码是0xc0000005。此错误可能是CLR中的错误,也可能是用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会破坏堆栈。

如果我继续超过该例外,我会立即得到另一个: “Unknown Module中发生了'System.ExecutionEngineException'类型的未处理异常。”

1 个答案:

答案 0 :(得分:0)

这里的问题结果是,不知何故,Program Files目录中可执行文件的兼容模式已设置为“Windows 95”!我不知道这是怎么结束的(我当然没有设置它!)但无论如何,当兼容模式被禁用时,所有工作都按预期工作(不出所料)!感谢所有评论的人。