COMSpy
指定した COM コンポーネントに対する QueryInterface、AddRef、Release などの呼び出しをトレースするツール。
http://staff.develop.com/jasonw/comspy/default.htm
こんな感じのデータが得られる。
COM コンポーネントのどのメソッドを呼び出したかまではわからない模様(原理的に不可能?)。
{Object} {Method} {Result} {アイコンの登録番号} C:\WINDOWS\System32\WScript.exe Process Opened (データ無し) 4 SysService.CSystemInfo Object Created (データ無し) 4 0x017D1650 - (SysService.CSystemInfo) IUnknown::QueryInterface(IUnknown) 00000001 8 0x017D1650 - (SysService.CSystemInfo) IUnknown::QueryInterface(IObjectWithSite) (0x80004002) インターフェイスがサポートされていません 9 0x017D1650 - (SysService.CSystemInfo) IUnknown::AddRef() 00000002 5 0x017D1650 - (SysService.CSystemInfo) IUnknown::QueryInterface(IDispatch) 00000001 8 0x017D1650 - (SysService.CSystemInfo) IDispatch::AddRef() 00000002 5 0x017D1650 - (SysService.CSystemInfo) IDispatch::Release() 00000001 6 0x017D1650 - (SysService.CSystemInfo) IUnknown::Release() 00000001 6 0x017D1650 - (SysService.CSystemInfo) IDispatch::AddRef() 00000002 5 0x017D1650 - (SysService.CSystemInfo) IDispatch::Release() 00000001 6 0x017D1650 - (SysService.CSystemInfo) IUnknown::QueryInterface(IDispatchEx) (0x80004002) インターフェイスがサポートされていません 9 0x017D1650 - (SysService.CSystemInfo) IDispatch::GetIDsOfNames (0x00000000) S_OK 0 0x017D1650 - (SysService.CSystemInfo) IDispatch::AddRef() 00000002 5 0x017D1650 - (SysService.CSystemInfo) IUnknown::QueryInterface(IDispatchEx) (0x80004002) インターフェイスがサポートされていません 9 0x017D1650 - (SysService.CSystemInfo) IDispatch::Invoke (0x00000000) S_OK 0 0x017D1650 - (SysService.CSystemInfo) IDispatch::Release() 00000001 6 0x017D1650 - (SysService.CSystemInfo) IDispatch::Release() 00000000 6 0x017D1650 - (SysService.CSystemInfo) IUnknown::Release() 00000000 6 0x017D1650 - (SysService.CSystemInfo) Object Destroyed (データ無し) 4 Process closed WScript.exe (データ無し) 4
spycfg でチェックをつけるとレジストリの InProcServer32 を書き変えてコクラス生成をフックしてしまうので、使い終わったら全部のチェックを外した方がよさそう。