20141121調研
1、在系統服務裡調用進程外COM的接口,接口中會啟動第三個進程,此時創建出來的進程外COM所在的進程和第三個進程,都是SYSTEM權限啟動的。
另外,如果之前進程外COM已啟動了一個進程,但不是SYSTEM權限的,那個系統服務調時,還會再創建一個新的COM進程
2、
一種調COM示例,使用了別人封的CDispatch類
::CoInitialize(NULL); CDispatch obj; IID _iid; //CLSIDFromString(L"{42637A0F-E8B8-4737-ABF4-F8B929E32651}", &_iid); CLSIDFromProgID(L"aaaaa.bbbb", &_iid); HRESULT hr = E_FAIL; CComPtr<IClassFactory> cf; //hr = CoGetClassObject(_iid, CLSCTX_INPROC_SERVER, NULL, IID_IClassFactory, (LPVOID*)&cf);//進程內 hr = CoGetClassObject(_iid, CLSCTX_LOCAL_SERVER, NULL, IID_IClassFactory, (LPVOID*)&cf);//進程外 if (cf) { hr = cf->CreateInstance(NULL, IID_IDispatch, (void**)&obj); } if (obj) { obj.Invoke(L"methodname", "參數"); } obj = NULL; cf = NULL; ::CoUninitialize();