He estado tratando de averiguar cómo interactuar mediante programación con Component-Based Servicing (CBS), que es básicamente el TrustedInstaller y otros servicios. Con el objetivo de poder consultar a CBS qué paquetes están instalados y obtener cualquier otra información que puedan tener sobre los paquetes instalados. Aquí hay un link to a overview of it.¿Puede interactuar mediante programación con el servicio basado en componentes (TrustedInstaller)?
Básicamente con C/C++/C# (no exigente) Me gustaría interactuar con esto a través de una API. Este enlace es el best documentation from MSDN relacionado con API que pude encontrar y no es mucho. Entonces aquí hay otro MSDN documentation area que da algunos detalles pero nada realmente sobre una API que puedo usar para interactuar con ella. Este está bajo el administrador de paquetes, que es cómo se puede interactuar a través de la línea de comandos de forma limitada para instalar paquetes basados en CBS. La mejor cita de ese último enlace es:
"CBS proporciona diversas API (que son no disponible públicamente) a sus clientes instaladores para dar servicio a los componentes del sistema operativo."
Lo cual puede decirlo todo, pero todavía no estoy dispuesto a darme por vencido. El hogar para todo o al menos la mayor parte de esto es %WINDIR%\servicing
que tiene CbsApi.dll
para empezar, mientras que parece estar registrado como COM DLL, no expone públicamente ninguna clase o función para hacer nada. Parece también que la mayoría de los detalles que el acceso a la API se encuentran en las subcarpetas como Packages
, Sessions
, Editions
, Version
, etc.
Sé que muchas personas no estarían tratando de hacer esto, excepto para mí y Greg Lambert quien tiene un couple blog posts desde hace dos años básicamente haciendo las mismas preguntas y tratando de descubrir esta API "no pública". Tampoco parecía que él hubiera descifrado esta nuez tampoco.
Así que ahora estoy en el punto de pedir ayuda y preguntar a la comunidad si alguien ha resuelto la API oculta para esto, o puede querer asumir el desafío y ver si quieren saberlo. Se agradece cualquier información que me ayude a dar un paso más.
Tengo una técnica furtiva para ejecutar código arbitrario como TrustedInstaller. Esto probablemente no hace lo que quieres sin embargo. – Joshua
@Joshua Bueno, ¿qué significa eso para ti? ¿Le da acceso a la API de CBS de alguna manera? –
La única razón para necesitar acceso a CBS es ver si hay actualizaciones específicas instaladas. Para eso, el número de versión en las DLL proporcionará la información solicitada. – Joshua