This comes up a lot on internal lists so I thought i'd share... from the FAQ:

Get the hresult by calling System.Runtime.InteropServices.Marshal.GetHRForException() on the Exception object.  If that info is not readily available, you may need to attach a debugger and set it to catch managed exceptions.  Then, get the hresult by retrieving the private _HResult field of the managed Exception object.