문제

자체 등록이 더 큰 설치 프로그램의 일부로 구성 요소를 설치하는 데 사용된다고 가정하면 자체 등록이 나쁜 이유는 무엇입니까? 예를 들어 VB Custom Controls 또는 Capicom 등의 자체 등록. 나는 당신이 스스로 쓴 DLL의 경우 자기 등록이 아마도 안전하지 않다는 것을 인정하지만, 나는 그것들을 논의하지 않습니다.

MSDN이 나열됩니다 몇 가지 이유 자기 등록이 나쁜 이유, 여기에서 재현됩니다.

  • 롤백은 제대로 작동하지 않습니다.
    좋아,이 이유는 의미가 있습니다.

  • 광고도 작동하지 않습니다.
    광고가 특정 유형의 소프트웨어 클라이언트에게만 중요하다는 사실을 무시하면 이것이 왜 문제인지 이해하지 못합니다. 구성 요소가 아닌 기본 응용 프로그램 만 광고해야합니다.

  • 자체 등록은 사용자 당 키를 올바르게 지원하지 않습니다.
    그래서 뭐? "공통"구성 요소에 대한 모든 사용자 액세스를 제공하는 것은 컴퓨터에 많은 사용자가 없으면 나쁘지 않습니다.이 경우 여전히 세계 종료가 아닙니다.

  • 자체 등록은 코딩 오류에 더 취약합니다.
    Microsoft가 작성한 DLL의 경우를 제외하고는 이것을 확실히 믿을 수 있습니다 (오류가있을 수 있지만 신뢰하는 것이 불합리하다고 생각하지 않습니다). 소프트웨어에 의해 생성 된 TLBS 및 OCX의 경우 코딩 오류는 거의 가능성이 낮아 보입니다.

  • 자체 등록 DLL은 다른 DLL에 연결될 수 있습니다.
    프로그램에 의해 생성 된 DLL의 경우, 이로 인해 자체 등록이 실패 할 가능성이 없지만 등록 키를 수동으로 추가하면 작동했을 것입니다. 차라리 내 자기 등록이 내가 DLL이 누락 된 오류를 반환하도록합니다.

    나는 이것이 불꽃을 그릴 것이라고 확신한다 :/

    편집 : 실제로 중요하다고 생각하는 주장 (사용자 응답과 내 자신의 내용).

  • 도움이 되었습니까?

    해결책

    이 항목까지 :

    • 자체 등록은 사용자 당 키를 올바르게 지원하지 않습니다.

      그래서 뭐? "공통"구성 요소에 대한 모든 사용자 액세스를 제공하는 것은 컴퓨터에 많은 사용자가 없으면 나쁘지 않습니다.이 경우 여전히 세계 종료가 아닙니다.

    기계에 얼마나 많은 사용자가 있는지뿐만 아니라 어떤 권한도 가지고 있습니다. 관리자가 아닌 경우 사용자는 업데이트 할 권한이 없을 것입니다. HKEY_LOCAL_MACHINE 레지스트리의 일부.

    다른 팁

    항목

    자체 등록 DLL은 다른 DLL에 연결될 수 있습니다

    DLL을 등록하려고 할 때 적용되지만 설치 프로그램은 아직 다른 DLL을 복사/설치하지 않았습니다. 등록 기능에 필요합니다.

    나는 내가 겪은 잠재적 "gotcha"를 추가 할 것이다 (ms com 객체에 대한 자동 생성 자체 등록 코드 포함) :

    자체 등록은 실행 파일을 실행하며 모든 것을 수반/요구합니다. 예를 들어, 구성 요소가 직접 또는 간접적으로 활성화되었다는 사실을 직간접 적으로 기록하는 경우 (아마도 구성 요소가 매우 구체적인 지점 또는 매우 구체적인 상황에서만 실행되거나 다른 응용 프로그램과 조정하는 경우 보안 로깅의 경우), 등록은 활성화 인 것으로 보입니다 (로깅에주의를 기울이지 않는 한). 로그 레코드 (예를 들어, 구성 요소가 활용 한 컨텍스트)가 흥미로울 수 있으며,이 경우 상속 된 컨텍스트가 자체 등록을 유발하는 모든 것을 갖게됩니다.

    대부분의 경우 큰 문제는 아니지만 때로는 미묘한 혼란을 일으킬 수 있습니다. 나는 그것을 바람직하지 않은 이유의 목록에 추가 할 것입니다.

    라이센스 : CC-BY-SA ~와 함께 속성
    제휴하지 않습니다 StackOverflow
    scroll top