我正在開發一個應作爲服務運行的DCOM應用程序。 我設法使這個應用程序作爲一個獨立的應用程序(客戶端請求的組件,並啓動獨立的應用程序) - 做到這一點,我正在執行 MyApp.exe/regserver 但我運行後 MyApp .exe/service 客戶端無法訪問應用程序 - 既不在服務運行時,也不在服務器運行時。 客戶端不是由我開發的(實際上,這是Excel RTD功能),所以我無法檢查問題發生的步驟。 那麼,我應該如何註冊一個類/應用程序,以便它作爲服務運行? 在VS2013開發,創建了ATL項目「service exe」。註冊COM類作爲服務運行
2
A
回答
2
服務的COM註冊ATL項目與其應用程序模式非常相似:COM類的註冊表鍵與服務器託管服務的唯一區別相同。然而,更重要的是,客戶端跨會話邊界訪問服務COM對象,並使用不同的憑據。 YourApp.exe作爲本地系統登錄的服務運行(除非您手動更改或調整了COM註冊碼),而客戶端以用戶身份登錄。
使其成爲服務,請務必查看您的COM對象的Launch and Activation Permissions。對於故障排除,您可能還需要更改服務的用戶帳戶以匹配運行客戶端應用程序的用戶(以排除與權限和不同用戶帳戶相關的問題)。
相關問題
- 1. 爲.net窗口服務註冊Com-Interop
- 2. WISE - COM服務器註冊選項「不註冊」不起作用?
- 3. com類庫註冊
- 4. Delphi - 在ROT中註冊com服務器
- 5. 註冊並運行PostgreSQL 9.0作爲Windows服務
- 6. 在作爲服務運行的註冊表中訪問CLSID。
- 7. 註冊爲COM Interop
- 8. 如何在運行時註冊COM庫?
- 9. 沒有爲「Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory」類型服務註冊
- 10. @ doctrine.orm.entity_manager不給予註冊爲服務類
- 11. Android NSD:註冊爲null服務類型
- 12. 如何爲Microsoft.OData.Edm.IEdmModel註冊服務類型
- 13. 註冊免費COM不爲我工作
- 14. COM互操作註冊
- 15. Silverlight和UserControl註冊爲COM
- 16. arcgis com註冊
- 17. COM註銷/註冊類型庫問題
- 18. 作爲特定用戶運行proc com服務器
- 19. 註冊失敗的嘗試Windows服務器上註冊一個COM DLL 2012 64
- 20. 在註冊爲SingleInstance的服務中請求一個註冊爲InstancePerRequest的服務
- 21. 運行Web服務作爲Windows服務
- 22. 我作爲服務運行
- 23. 運行odoo作爲服務
- 24. 註冊broadcastReceiver服務
- 25. 註冊Windows服務
- 26. COM註冊錯誤(80040154類沒有註冊)在VB.Net
- 27. 將可執行文件作爲服務運行時,COM調用不起作用
- 28. ATL COM類註冊.rgs文件默認
- 29. 類未註冊COM DI API PHP
- 30. 動態註冊JAX RS服務類
註冊不*完全相同。當作爲服務託管時,COM類註冊需要['AppID'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms682359.aspx)和['LocalService']( https://msdn.microsoft.com/en-us/library/windows/desktop/ms693774.aspx)值來指定服務名稱,因此COM可以啓動它尚未運行的服務。 –
@RemyLebeau:是的,這是包含在「非常相似」。相同的鍵,小的服務相關的差異。關鍵是「/ service」完全覆蓋了這一點(特別是:不需要從代碼中執行LocalService) - ATL可以直接使用),典型問題與權限有關,而不是註冊本身。 –
這也是我的印象。我所做的是: - 創建HKCR/CLSID/{具有正確CLSID的密鑰CLSID的類的ProgID - 創建HKCR/CLSID/{CLSID類的值爲應用程序的值AppID - 創建HKCR/AppID/{AppID的值} LocalService =服務名稱 - 使用dcomcnfg,允許所有內容爲「Everyone」 我在服務器啓動和類啓動時都有調試輸出。但日誌是空的。 好東西是 - HKCR/CLSID/{CLSID}有關鍵的「LocalServer32」,但沒有嘗試作爲服務器運行,所以我認爲它在HKCR/AppID/{AppID中找到LocalService},但是某些原因無法運行。 – thedimitrius