进程类和.NET安全性?

进程类和.NET安全性?,.net,security,.net-1.1,full-trust,.net,Security,.net 1.1,Full Trust,我在应用程序中使用Process类,就在 静态主要方法。我正在使用Process类来了解另一个 我的应用程序的实例当前正在运行。如果我的申请是 已经运行,我将退出。我不是在寻找一种改变的方法,这种方法已经有效多年了 但最近这在我们用户的某些计算机上不起作用,我得到错误“公共语言运行时调试服务: 应用程序已生成无法处理的异常” 我已经完成了程序集的安装,用户是系统管理员 任何想法都会有帮助,谢谢 编辑:WMI性能适配器服务在抛出错误之前打开,在错误发生后关闭,我是否缺少某种权限 这是在framew

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

但最近这在我们用户的某些计算机上不起作用,我得到错误“公共语言运行时调试服务: 应用程序已生成无法处理的异常”

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

任何想法都会有帮助,谢谢

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


这是在framework1.1上的,您可以添加一个顶级的try-catch(或者使用UnhandledException处理程序)来查看抛出的异常类型吗?这将非常有帮助。

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

static void Main()
{
  bool mutexWasCreated;
  using (Mutex mutex=new Mutex(true, AppID, out mutexWasCreated))
  {
    // check for single instance
    if (!mutexWasCreated)
      return;

    Application.Run(...);
  }
}
我正在使用Process类来了解我的应用程序的另一个实例当前是否正在运行

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


嗯。。。不要介意。这似乎只能从Visual Basic中获得。我会把答案留在这里,以防对其他人有用。

我同意布兰恩的看法。如果您不知道抛出了什么异常,则很难进行故障排除。我会听取并记录问题,作为排除故障的第一步。

我记得我正在处理的一些.net代码也有类似的问题。它在citrix环境中

用户必须是我认为的性能组的成员,才能运行Process.getProcessByName()。。。这真的不可取

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

第二个解决方法是在设置窗口焦点的部分代码中。在这里,我们只是在try/catch块中运行AppActivate(),我想您可能可以这样做,如果AppActivate失败,那么您需要运行应用程序


希望这有帮助

这仅适用于.net 2.0及以上版本。此应用程序是在1.1VisualBasic中构建的。应用程序服务的支持似乎有点差。如果你需要Windows徽标认证,你应该忘记它。请看这里的评论:我不是在寻找一种改变这种情况的方法,这种方法已经使用多年了,我很好奇为什么进程会引发安全异常,Thanks@Oscar:你怎么知道这是安全例外?老实说,我同意克里斯的看法。你做得不对。把问题解决在心里,你就不必担心了。您也不必改变信任和权限来执行它。@Oscar:什么使您认为问题与安全相关?我认为查询WMI可能会受到限制