Mam kawałek kodu, który ma na celu sprawdzenie, czy na danej stacji jest zarejestrowany COM. Możliwa jest sytuacja, że COM jest zarejestrowany, ale nie ma pliku dll - wtedy również poniższe powinno zwrócić false. Wszystkie MessageBoxy są tu tylko do debugowania.
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;
}
}
O ile powyższe działa prawidłowo na Windowsie XP i 7, to na Windows Server 2008 program się po prostu wywala zaraz po MessageBox.Show("?"); Jak to możliwe? Jak obsłużyć wyjątek tak, by był naprawdę obsłużony, a nie crashował aplikację?