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 では、例外は処理されません。"?" を表示した直後にアプリケーションがクラッシュします。
何故ですか?アプリケーションで例外を処理するにはどうすればよいですか?