【问题标题】:C# application stopped workingC# 应用程序停止工作
【发布时间】:2009-07-15 07:17:31
【问题描述】:

我在 Visual c# express 2008 中制作了一个 C# windows 应用程序。我在我的 PC 上单独执行了 exe 文件,它运行良好。现在当我在另一台具有 vista 的计算机上运行相同的文件时,出现错误“WindowsFormapplication 已停止工作”。在我的电脑上,它也在 5-10 分钟后停止工作。那么是我的代码有问题还是有其他问题?

我是这里的新手...任何帮助将不胜感激..

已编辑.....

它使用计时器:

System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(startup.onTimerEvent);
timer.AutoReset = true;
timer.Interval = 60000;
timer.Start();
Application.Run();
GC.KeepAlive(timer);

它还创建和设置一个注册表项..

【问题讨论】:

  • 有关应用程序功能的一些详细信息将帮助我们帮助您。它是否执行需要管理员访问权限的操作?
  • 我们需要更多信息……也许是堆栈跟踪?甚至可能是一些源代码?
  • 我猜你的应用程序抛出了一个异常并且没有处理它。当异常到达堆栈顶部时,操作系统会捕获它并弹出“XXX 已停止工作”对话框。所以,我们只需要知道那个异常是什么以及它是从哪里抛出的。
  • 它写入注册表的哪个部分?
  • 您可能需要检查应用程序事件日志以获取有关您的应用程序抛出的任何未处理异常的信息。

标签: c# windows-vista


【解决方案1】:

我猜这是权限问题。在 Vista 上,系统被更严格地锁定,因此如果您的程序无法获得所需的权限,它将引发异常。如果在程序启动时发生这种情况,这就是启动时出现错误的原因。

在您自己的机器上,您可能要等待 5-10 分钟,因为这是导致应用程序失败的另一个错误。

【讨论】:

  • 现在只需添加您提到的 HKEY_LOCAL_MACHINE - 这需要管理员权限。如果您没有它们,则会引发异常。在 Vista 上,即使您以管理员身份登录,您也需要提升您的权限才能以管理员身份运行。
【解决方案2】:

您能否使用第二台计算机上不可用的 .NET 版本中的某些东西?

【讨论】:

    【解决方案3】:

    我同意科林的观点。当您的应用程序尝试创建注册表项时,这无疑是一个权限问题。

    你应该有一个包装器,它在尝试写入之前检查用户是否有权限,或者至少在用户没有权限的情况下处理......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多