Rod*_*ley 8 c c# c++ windows-services
我一直在试图找出如何以编程方式与基于组件的服务(CBS)进行交互,这基本上是TrustedInstaller和其他服务.目标是能够查询CBS安装的软件包,并获取他们在已安装的软件包上可能拥有的任何其他信息.这是一个概述的链接.
基本上使用C/C++/C#(不挑剔)我想通过API与此进行交互.此链接是MSDN中与API相关的最佳文档,我可以找到并且它并不多.然后这是另一个MSDN文档区域,它提供了一些细节,但没有真正关于我可以用来与它进行交互的API.这个是在包管理器下的,它是如何通过命令行以有限的方式进行交互以安装基于CBS的包.最后一个链接的最佳引用是:
"CBS 向其客户端安装程序提供各种API(不公开),以便为操作系统组件提供服务."
可能会说这一切,但我还没准备好放弃.家庭的全部或至少大部分是%WINDIR%\servicing具有CbsApi.dll对于初学者来说,尽管其出现被注册为COM DLL不公开暴露任何类或函数做任何事情.这似乎也是大部分细节的API访问是在子文件夹,例如Packages,Sessions,Editions,Version,等.
我知道除了我自己和格雷格兰伯特之外,没有多少人会尝试这样做,他在两年前有几篇博客帖子基本上都在问同样的问题并试图找出这个"非公开"的API.看起来他也没有破解这个坚果.
所以现在我正在寻求帮助,并询问社区是否有人为此制定了隐藏的API,或者可能想要接受挑战,并希望他们能够找到答案.任何有助于我更进一步的信息都值得赞赏.
以编程方式访问 CBS 的正确方法是通过 API 访问其客户端。根据您想要完成的任务,这将涉及Windows Installer或Windows Update Agent API,这两者都记录在 Windows SDK 中。CBS instelf 是一个实现细节,不应直接使用。公开可用的信息如此之少的原因是,依赖实施细节而不是合同是一种不好的做法,而且有更简单、更可靠的方法来完成您直接使用 CBS 所做的任何事情。
Windows Installer SDK 的这一部分处理已安装组件的查询。
| 归档时间: |
|
| 查看次数: |
2406 次 |
| 最近记录: |