簡體   English   中英

我如何使用 heat.exe(或類似的)從 Windows 服務中獲取 COM 注冊?

[英]How can I use heat.exe (or similar) to harvest COM registration from a Windows Service?

我如何使用 heat.exe(或類似的)從 Windows 服務中獲取 COM 注冊?

多年來,我一直使用 heat.exe(或通過 Wix 真正使用 DllHarvester 類)來收集 Windows 2003 服務器上安裝包的 COM 和 .Net 注冊。 由於 IT 部門的要求,我現在被迫升級服務器並切換到更“現代”的操作系統(即 2012R2)。 但是在將所有內容遷移到新操作系統后,我開始丟失大約 1/3 的所有注冊信息。 追蹤它顯示它與一些較舊的 3rd 方 COM 文件有關。

進一步的跟蹤似乎表明,當使用提升的進程從交互式用戶帳戶(登錄到桌面)運行時,收獲工作得很好。 但是,從服務運行它不會(我使用的是使用管理員組中的用戶帳戶作為服務運行的 CruiseControl.Net 構建服務器)。

使用任務計划程序進一步試驗我發現“在用戶登錄時運行”有效,但“無論用戶是否登錄都運行”不起作用。

我曾嘗試重新啟動 LogonUser/CreateProcessAsUser,但它非常復雜,而且我未能使其正常工作。

我想以登錄用戶身份運行會創建不同的注冊表視圖,但我真的不知道為什么這會影響 COM 注冊?

有什么方法可以從現代操作系統(最好是 W2k12R2)上的服務中獲取數據?

使用來自 sysinternals 的 psexec 調用收割機

psexec -h ...

在你自己的機器上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM