我一直在試圖找出如何以編程方式與基於組件的服務(CBS)進行交互,這基本上是TrustedInstaller和其他服務。目標是能夠查詢CBS安裝的軟件包,並獲取它們可能安裝的軟件包上的任何其他信息。這是一個link to a overview of it。你能以編程方式與基於組件的服務(TrustedInstaller)交互嗎?
基本上使用C/C++/C#(不挑剔)我想通過API與此交互。這個鏈接是best documentation from MSDN,這是API相關的,我可以找到它並不多。然後這裏是另一個MSDN documentation area,它提供了一些細節,但沒有真正關於我可以用來與它進行交互的API。這是一個包管理器,你可以通過命令行以有限的方式進行交互以安裝基於CBS的包。從最後一個環節最好的報價是:
「CBS提供了(這是 不公開)各種API爲其客戶 安裝到維修操作 系統組件。」
這可以說一切,但我還沒有準備好放棄呢。所有或至少大部分的這個家都是%WINDIR%\servicing
其中CbsApi.dll
爲初學者,雖然它似乎被註冊爲一個COM DLL,它並沒有公開任何類或功能做任何事情。這似乎也是大部分細節的API訪問是在子文件夾,例如Packages
,Sessions
,Editions
,Version
等
我知道沒有多少人會試圖做到這一點,除了我和Greg Lambert誰從兩年後有一個couple blog posts基本問相同的問題,並試圖找出這個「不公開」的API。看起來他並沒有破解這個堅果。
所以,現在我正着手尋求幫助,並詢問社區是否有人爲此制定了隱藏的API,或者可能想要接受挑戰並查看他們可以找到的要求。任何有助於我更進一步的信息都會受到讚賞。
我有一個偷偷摸摸的技術來運行任意代碼作爲TrustedInstaller。這可能不會做你想要的。 – Joshua 2011-05-18 03:23:39
@Joshua那麼這對你有什麼成就?它是否允許您以某種方式訪問CBS API? – 2011-05-18 04:18:01
需要訪問CBS的唯一原因是查看是否安裝了特定更新。爲此,DLL上的版本號將提供請求的信息。 – Joshua 2011-05-18 19:28:19