Catch(…) and rethrow

Ned Batchelder said that he didn't approve of the catch(...) but I think it's necessary in this particular instance.  This is because when the UpdateRegistry method fails for any reason, the CopyFiles must be undone.

What I missed is re-throwing the exception after fixing the stuff I knew I had to fix:

    } catch (...)
    {
        UnCopyFiles();
        UnUpdateRegistry();
        throw;

    }

If there are other specific error conditions that you can handle and eat (de-escalating them from exceptions to return codes) then you'd want to do that in a separate catch block.