背景: 我正在將遺留代碼從WinXP遷移到Win7平臺。我有一個託管COM對象的傳統ATL Win32服務。我正在嘗試將它作爲一個超出proc的COM進程運行,並使用/ RegServer選項而不是/ Service註冊它。在Run()部分下,我有作爲一個out-proc公司的ATL服務
CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,REGCLS_MULTIPLEUSE);
讓我們打電話給這個控制器供我們討論。
我有另一個服務,在用戶帳戶下啓動時運行,而不是LocalSystem。該服務執行CoCreateInstance來實例化控制器對象。發生這種情況時,控制器進程的實例將在用戶帳戶下創建。讓我們將此服務稱爲服務供我們討論。
現在我有另一個過程,它也做一個CoCreateInstance來實例化控制器對象。讓我們打電話給這個代理。該代理應該通過腳本和命令行運行。
問題:每次我的機器啓動並且服務和代理都執行一次,我看到兩個Controller進程實例。我不明白爲什麼。是因爲一個是服務而另一個是一個常規流程?我想有一個實例正在運行。
任何指針將不勝感激。