1

COMがシステムに登録されているかどうかを確認する関数があります。COM は登録されているが、dll ファイルが見つからないということが発生する可能性があります。この場合、関数も false を返す必要があります。MessageBoxes はデバッグのみを目的としています。

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;
    }
}

上記の Windows XP および 7 では正常に動作します。Windows Server 2008 では、例外は処理されません。"?" を表示した直後にアプリケーションがクラッシュします。

何故ですか?アプリケーションで例外を処理するにはどうすればよいですか?

4

1 に答える 1