2010-07-27 2 views
9

기본적으로 TrustedInstaller 및 기타 서비스 인 CBS (Component-Based Servicing)와 프로그래밍 방식으로 상호 작용하는 방법을 찾으려고 노력했습니다. CBS에 어떤 패키지가 설치되어 있는지 질의하고 설치된 패키지에있을 수있는 다른 정보를 얻을 수있는 목표. 다음은 link to a overview of it입니다.프로그래밍 방식으로 구성 요소 기반 서비스 (TrustedInstaller)와 상호 작용할 수 있습니까?

기본적으로 C/C++/C# (까다롭지는 않음)를 사용하여 API를 통해이 기능과 상호 작용하고 싶습니다. 이 링크는 내가 찾을 수있는 API 관련한 best documentation from MSDN이며 그다지 많지 않습니다. 그렇다면 여기서 또 다른 MSDN documentation area은 약간의 세부 사항을 제공하지만 API와 관련하여 사용할 수있는 것은 없습니다. 이 패키지 관리자는 CBS 기반 패키지를 설치하기 위해 제한된 방법으로 명령 줄을 통해 상호 작용할 수있는 방법입니다. 마지막 링크에서 최선의 인용은 다음과 같습니다

"CBS가 운영 시스템 구성 요소를 서비스로 고객 설치에 ( 공개적으로 사용할 수 없습니다 ) 다양한 API를 제공합니다."

모든 것을 말해 줄 수도 있지만 아직 포기할 준비가 아닙니다. 전부 또는 적어도 대부분의 가정은 %WINDIR%\servicing이고 우선적으로 CbsApi.dll입니다. COM DLL로 등록 된 것처럼 보이지만 아무 것도 수행 할 수있는 클래스 나 함수가 공개되어 있지 않습니다. 세부 사항의 대부분은 API 액세스가 하위 폴더에 있다는 것으로도 보인다 같은 Packages, Sessions, Editions, Version

나는 많은 사람들이 자신과 Greg Lambert를 제외하고이 작업을 수행하려고 할 것 알지 누가 2 년 전 동일한 질문을하고이 "공개적이지 않은"API를 찾아 내려고 노력하면서 couple blog posts을 가지고 있습니다. 그는 아직이 너트를 깨뜨린 것처럼 보이지 않았다.

그래서 지금은 도움을 청하고 지역 사회에 누군가가 숨겨진 API를 해결했는지 묻습니다. 또는 도전을 받아보고 알아 내고 싶을 수도 있습니다. 내가 한 걸음 더 가까이 나아갈 수있는 정보는 감사하겠습니다.

+0

TrustedInstaller로 임의 코드를 실행하는 음흉한 기술이 있습니다. 이것은 아마 당신이 원하는 것을하지 않습니다. – Joshua

+0

@ Joshua 그게 당신을 위해 무엇을 성취합니까? CBS API에 어떤 방식 으로든 액세스 할 수 있습니까? –

+0

CBS에 대한 액세스 권한이 필요한 유일한 이유는 특정 업데이트가 설치되어 있는지 확인하는 것입니다. 이를 위해 DLL의 버전 번호가 요청한 정보를 제공합니다. – Joshua

답변

1

프로그래밍 방식으로 CBS에 액세스하는 올바른 방법은 API를 통해 클라이언트에 전달하는 것입니다. 달성하려는 작업에 따라 Windows Installer 또는 Windows Update Agent API이 포함되며, 둘 다 Windows SDK에 문서화되어 있습니다. CBS instelf는 구현 세부 사항이므로 직접적으로 사용하면 안됩니다. 공개적으로 이용할 수있는 정보가 거의없는 이유는 계약보다는 구현 세부 사항에 의존하는 것이 나쁜 습관이며 CBS를 통해 직접 수행 할 수있는 모든 것을 성취하기위한 간단하고 안정적인 방법이 있다는 사실의 조합입니다.

This part은 설치된 구성 요소를 쿼리하는 Windows Installer SDK를 다룹니다.

+0

기술적으로 대답을 제공하지 않고 단지 질문 만하면됩니다. 나는 CBS와 PROGRAMMATICALLY 상호 작용하고 싶다는 것이 분명하다고 생각한다. 이 경우에 필요한 API를 제공하지 않는 MSI를 사용하고 싶지 않습니다. 우리는 이미 그것을 할 수있는 곳에서 사용하고 있습니다. 우리가 액세스해야하는 이유에 대한 세부 정보를 제공 할 수는 없지만 반드시 필요한 것은 아닙니다. "숨겨진"문서화되지 않은 CBS API에 액세스하는 방법을 알고 있다면 여기에 세부 정보를 유출하고 커뮤니티와 공유하십시오. :) –

+0

나는 코멘트를 추가 할 능력이 없었기 때문에 대신 대답을 사용했지만 당신의 권리 때문에 적절하게 편집했습니다. 그것은 의도 한대로 사용할 수없는 정보를 요구하고 있기 때문에 희망하는 정보를 제공하지 못하며, 단지 HOW가 아닌 WHY가 필요하기 때문에 지역 사회가 언제 어떻게 사용할 지에 대한 컨텍스트를 가질 수 있습니다. 정보가 제공됩니다. 왜냐하면 일반 (컨텍스트가없는) 경우의 대답은 당신이 그 일을 시작해서는 안되기 때문입니다. –

+0

"당신이 의도적으로 이용할 수없는 정보를 요구하고 있습니다."- 그것은 나에게도, 대중에게도 공개되지 않기 때문에 공개하도록 요청하는 이유입니다. 왜 질문에 대답하는 것이 중요하지 않습니다. 대답을 모르는 경우 대답하지 마십시오. 계정을 가진 모든 사람이 질문에 설명을 추가 할 수 있습니다. 귀하가 인정한 귀하의 답변은 제 질문에 대한 답변이 아닙니다. Windows Installer 나 WUA API를 사용할 수는 있지만 사용하는 API에 액세스 할 필요가 없습니다. 당신은 "Microsoft"가 당신이해서는 안되는 일을 당신이 원하지 않는다고 가정하고 있습니다. 그것은 틀 렸습니다. –

0

아마도 MS의 Component Based Servicing Reference이 발견되어 COM 인터페이스를 문서화하기 때문에 상황이 변경되었을 수도 있습니다.

사이드 노트 : 레이몬드 첸 (Raymond Chen)의 블로그와 그 반응에 대해 나는 a comment을 통해 여기에 올랐다. "구성 요소 기반 서비스 란 무엇인가? 왜 재앙인지, 자동 정렬과 어떤 관련이 있습니까?" 나는 아직도 답을 모른다.

디스크 공간 부족은 구성 요소 기반 서비스 인 재해로 인해 Windows 7에서 자주 발생하는 문제입니다.

[Explorer에서 자동 정렬을 사용하지 않도록 설정할 수 있으면 문제가되지 않습니다. -Raymond]

+0

나는 이것들을 완전히 알고 있으며 문서가 오래되었고 인터페이스가 변경된 것을 알았다. 나는 내가 자유 시간을 가지면서 사용하고 싶은 것들에 대한 올바른 인터페이스를 찾아 내려고 노력했다. 나는 진전을 이루었지만 완전히 기능적인 것은 아무것도 없다. –

+0

@ 로드니 폴리 : 충분히 공평합니다. 나는 당신의 질문을 더 철저히 읽어야했다. 제가 인용 한 코멘트/응답에 대한 설명을 알고 있습니까? –

+0

CBS가 어떤 종류의 디스크 공간 문제를 일으키는 것을 본 적이 없습니다. 나는 그것의 빨간 청어와 다른 것이 문제의 원인 일 가능성이 있다고 생각합니다. CBS의 유일한 재앙은 Microsoft가 API를 공개하겠다는 약속을 지키는 것입니다. –

0

CBS는 기본적으로 Windows 업데이트 및 기타 서비스 작업을위한 것입니다. Microsoft 자체에서 릴리스되기 때문에 CBS의 고객은 Microsoft의 내부 팀입니다. API는 공개적으로 공개되지 않습니다. Windows Updates를 작성하는 데 필요한 도구 및 XML 파일은 Microsoft 내부에서 제공됩니다. 타사 응용 프로그램에서 CBS 기술을 사용할 수있는 방법은 없습니다.

+0

그 모든 것이 이해되지만, 소프트웨어를 다룰 때는 절대로 절대 말하면 안됩니다. 제 3 자 애플리케이션이 CBS 기술을 사용할 수있는 "방법이 없다"는 귀하의 진술은 잘못되었습니다. 이 문제가 해결되어 숨겨진 API를 파악할 수 있었고 지난 7 개월 간 API와 상호 작용 해 왔습니다. –

+0

@ 로드니 : 물론 합법적 인 리버스 엔지니어링을 통해 얻은 정보를 어딘가에서 온라인으로 올리면 다른 사람들도 혜택을 볼 수 있습니다. 아니면 SO 메타가 애정을 가지고 (실제로는) * 도움이 뱀파이어 *라고 말하는 것 중 하나입니까? –

+0

@abhik 먼저 우리는 독점 IP를 사용하는 상용 제품을 사용하는 Microsoft 파트너이며 법적으로 법적 사실을 제공 할 권한이 없습니다. 둘째, 내 평판을 확인하고 내가 게시 한 답변을보고 대답하고 내가 수년 동안 기여한 오픈 소스 프로젝트에 대해 자유롭게 그렇게 할 수 있습니다. 그러나 수동적 인 공격적 방법으로 누군가의 실제 지식이없는 뱀파이어의 도움이 오히려 무례하다는 것을 암시합니다. –

관련 문제