代码之家  ›  专栏  ›  技术社区  ›  Oscar Cabrero

进程类和.NET安全性?

  •  0
  • Oscar Cabrero  · 技术社区  · 16 年前

    我正在应用程序中使用Process类,就在 静态主方法。我正在使用Process类来了解 我的应用程序的实例当前正在运行。如果我的申请是 已经跑了,我要退出。我不想改变这个,这个已经用了很多年了

    应用程序生成了一个无法处理的异常。

    我已经完成了程序集,用户是系统管理员。

    编辑:在引发错误之前打开了WMI性能适配器服务,在发生错误之后关闭,是否缺少某种权限?。

    这是框架1.1

    5 回复  |  直到 16 年前
        1
  •  4
  •   laktak    16 年前

    虽然我无法推测进程崩溃的原因,但更好的解决方案是使用命名互斥:

    static void Main()
    {
      bool mutexWasCreated;
      using (Mutex mutex=new Mutex(true, AppID, out mutexWasCreated))
      {
        // check for single instance
        if (!mutexWasCreated)
          return;
    
        Application.Run(...);
      }
    }
    
        2
  •  1
  •   Brann    16 年前

    您可以添加一个顶级try catch(或者使用UnhandledException处理程序)来查看抛出了什么异常kinf吗?这会有很大的帮助。

        3
  •  1
  •   Aaron Daniels    16 年前

    我同意布兰恩的观点。如果不知道抛出了什么异常,则很难进行故障排除。我会听 unhandledexception event 并将此问题记录为解决此问题的第一步。

        4
  •  1
  •   Mark    16 年前

    用户必须是性能组的成员才能运行Process.GetProcessesByName()。。。这真的不可取!

    我认为我们有两个解决方法-第一个是在代码开始时,这是从一个VB脚本运行代码,该脚本测试代码是否已经在运行。

    希望这有帮助!

        5
  •  0
  •   Joel Coehoorn    16 年前

    我使用Process类来知道我的应用程序的另一个实例是否正在运行。

    .Net提供 StartupNextInstance 为此目的的应用程序事件。