如何使用heat.exe(或类似工具)从Windows服务中获取COM注册?

时间:2015-11-24 19:13:01

标签: c# windows service wix cruisecontrol.net

如何使用heat.exe(或类似软件)从Windows服务中获取COM注册?

我已经使用heat.exe(或通过Wix真正使用DllHarvester类)来为Windows 2003服务器上的安装包收集COM和.Net注册多年。由于IT部门的要求,我现在不得不升级服务器并切换到更“现代”的操作系统(即2012R2)。但是在将所有内容迁移到新操作系统之后,我已经开始丢失大约1/3的所有注册信息。跟踪它显示它与一些较旧的第三方COM文件有关。

进一步跟踪似乎表明,使用提升的流程从Interactive用户帐户(登录到桌面)运行时,收获工作正常。但是,从服务运行它不会(我使用的是使用管理员组中的用户帐户作为服务运行的CruiseControl.Net构建服务器)。

使用任务计划程序进一步尝试我发现“在用户登录时运行”可以正常工作,但“无论用户是否登录都运行”不起作用。

我试图让LogonUser / CreateProcessAsUser重新启动,但它非常复杂,但我没能让它正常工作。

我想以登录用户身份运行会创建一个不同的注册表视图,但我真的不知道为什么这会影响COM注册?

有没有办法通过现代操作系统上的服务(最好是在W2k12R2上)进行收获?

1 个答案:

答案 0 :(得分:0)

使用sysinternals中的psexec

调用收割机
  

psexec -h ...

在你自己的机器上。