C# 在Windows 2008上,应用程序崩溃,而不是处理异常

C# 在Windows 2008上,应用程序崩溃,而不是处理异常,c#,com,windows-server-2008,C#,Com,Windows Server 2008,我有一个函数,它应该检查COM是否在系统中注册。可能发生的情况是,COM已注册,但dll文件丢失-在这种情况下,函数也应返回false。MessageBox仅用于调试目的: public bool IsCOMInstalled(string name) { try { MessageBox.Show("?"); var obj = Activator.CreateInstance(Type.GetTypeFromProgID(name));

我有一个函数,它应该检查COM是否在系统中注册。可能发生的情况是,COM已注册,但dll文件丢失-在这种情况下,函数也应返回false。MessageBox仅用于调试目的:

public bool IsCOMInstalled(string name)
{
    try
    {
        MessageBox.Show("?");
        var obj = Activator.CreateInstance(Type.GetTypeFromProgID(name));
        MessageBox.Show("!");
        return true;
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);
        return false;
    }
}
在WindowsXP和7以上版本上运行良好。在Windows Server 2008上,不处理异常。应用程序在显示?后立即崩溃


为什么呢?如何使我的应用程序处理异常…?

我认为这是您的windows框架的问题

当框架无法处理异常时,CLR无法进一步运行。意味着您的代码完全破坏了CLR的功能

检查windows 8的系统要求,如以下链接注释所示。 我找到了windows 8运行此操作的系统要求。

我想我们需要这个名字。嗯,是TestDll.TestTools。我看不出这有什么帮助。听起来你在初始化时TestDLL.TestTools中有一个bug。如果有什么东西导致进程崩溃,你就无法捕捉到。此外,这些ExecutionEngineeException、StackOverflowException和OutOfMemoryException不会被捕捉到,你的应用程序就会死掉。但是由于您正在进行COM调用,首先检查是否缺少本机DLL。