2010-06-16 5 views
2

최신 파일을 가져오고 COM 구성 요소를 등록하면 시작시 자체적으로 업데이트되는 기존 VB6 응용 프로그램이 있습니다. 이 작업은 로컬 (regsvr32) ActiveX COM 구성 요소와 다른 컴퓨터의 COM +에 등록 된 원격 (clireg32) ActiveX COM 구성 요소 모두에 적용됩니다.HKEY_CLASSES_ROOT에 대한 액세스 권한이없는 원격 DLL 등록

새로운 요구 사항으로 인해 보안상의 이유로 HKEY_LOACL_MACHINE (HKLM)에 기록하지 못하게되었습니다. 이는 regsvr32 및 clireg32를 호출 할 때 분명히 기본적으로 발생합니다.

RegOverridePredefKey Windows API 메서드를 사용하여 HKEY_CURRENT_USER \ Software \ Classes (HKCU)에서 로컬 COM 구성 요소를 등록하는 방법을 생각해 냈습니다. 이는 삽입을 레지스트리로 HKCU 위치로 재지 정하여 작동합니다. 그런 다음 COM 구성 요소가 인스턴스화되면 Windows는 먼저 HKLM에서 구성 요소 정보를 찾기 전에 HKCU를 찾습니다. 이것은 regsvr32가하는 일을 대체합니다.

우리가 현재 clireg32를 사용하여 VBR/TLB를 등록하려고 할 때 발생하는 문제는 등록 프로세스가 HKEY_LOACL_MACHINE에 등록 키도 추가한다는 것입니다.

clireg32.exe를 등록 구성 요소로 리디렉션하는 방법은 HKEY_CURRENT_USER입니까? 제한된 보안 액세스 권한이있는 클라이언트 컴퓨터에 이러한 COM + 구성 요소를 등록 할 수있는 다른 방법이 있습니까?

우리의 유일한 해결책은 레지스트리에 수동으로 등록 정보를 쓰는 것이지만 이상적이지 않으며 주요 문제가됩니다.

답변

3

여기에 몇 가지 해답이 있습니다. 업데이트를 설치해야하는 12 세 기술을 사용하는 앱의 개념은 이상한 것이며 최신 기기에서는 제대로 지원되지 않습니다. reg-free COM과 같은 일반적인 해결책은 COM +와 호환되지 않는다고 생각합니다. 버그 수정 스타일 업데이트를 통해 구성 요소를 다시 등록해야하는 것도 꽤 이상합니다. 이것이 실제로 필요한지 확인 했습니까?

해당 테마를 확장하면 실제로 배포시 GUID가 얼마나 자주 변경됩니까? 열쇠가 끊임없이 변경되지 않으면 구성 요소 자체에 맡기지 말고 직접 등록을 담당해야합니다. SysInternals의 ProcMon 유틸리티로 등록을 캡처하는 것만 큼 쉬울 수도 있습니다. 대신 HKCU 키를 설정하는 .reg 파일을 작성하십시오.

그 외에도 실제로 쓸 수없는 레지스트리 키를 사용할 권한이 필요합니다. 고객으로부터 문제가 해결되지 않으면 업데이트를 설치하는 예약 된 작업을 요청하십시오. 시스템 관리자가 허용하면 액세스 권한을 얻을 수 있습니다.

+0

귀하의 의견은 모두 집에 도착했으며 우리는 그들을 강요했습니다. 그 대답은 .net 일로의 간단한 이동 이었으면 좋겠습니다. 모든 새로운 dev는 .net에서 이루어 지지만 나머지 애플 리케이션은 "잘 작동한다"고 버그 수정이 이루어집니다. 우리는 완전히 다시 쓰지 않고 그대로 작동하도록하고 있습니다. GUID와 인터페이스는 자주 변경되지 않습니다. 우리는 ProcMon/Regmon을 사용하여 어떤 일이 일어나고 있는지보고 사용했습니다. 앞서 언급 한 것처럼 Reg Free COM은 우리가 사용할 수있는 대안으로 보이지 않습니다. –

관련 문제