저는 현대 Windows C++ 응용 프로그램이 Windows에서 파일 형식을 등록하는 방법을 조사했습니다 (C++: How do I correctly register and unregister file type associations for our application (programatically) 참조).Windows에서 제거 할 때 다른 사용자 계정에서 ProgID를 삭제하는 방법?
그리고 주제에 대한 다양한 MSDN 기사를 통해 빗질 한, 다음과 같이 될 나타나는 요약 :
- 설치 (상승) 글로벌 ProgID를 HKLM \ SOFTWARE \ 클래스를 등록해야합니다 \ 내 - (예 : HKLM \ Software \ Classes \ TextPad.text)
- 설치 관리자는 문서 유형 (예 : .myext)에 대한 기본 연결을 구성하고이를 HKLM의 앞에서 설명한 글로벌 ProgID로 지정합니다.
참고 : 사용자는 모든 기본 연결을 수락하거나 설정할 연결을 사용자 지정할 수 있도록 여기에 사용자 인터페이스를 제공해야합니다. - 실행중인 표준 (unelevated) 응용 프로그램은 현재 사용자가 설치 프로그램에서 사용할 수있는 것처럼 개인 연결을 설정할 수있는 UI를 제공해야합니다. 단, 이러한 연결은 HKCU \ Software \ Classes에 저장됩니다 (사용자별로 기계 당).
- UN 설치 관리자는 등록 된 모든 ProgID를 삭제해야합니다 (Windows는 누락 된 ProgID를 가리키는 연결을 처리 할만큼 스마트하고 MSDN에서 지정한 원하는 동작이므로 실제 파일 연결 만 남겨 두어야합니다).
# 4 : 제거 프로그램이 특정 사용자 계정에 대해 상승 실행되면 어떻게 다른 사용자에 대해 3 단계에서 생성 된 사용자 별 ProgID를 삭제합니까?
상승 모드에서도 제거 프로그램이 다른 사용자의 레지스트리 하이브로 이동하여 항목을 삭제할 수 없습니까? 아니면 할 수 있을까요? 그것은 주어진 각 사용자 하이브를 먼저로드해야합니까? 여기에 어떤 규칙이 있습니까?
어떤 통찰력을 주셔서 감사합니다.
편집 :
"정말로 * nice"가되고 싶다면 앱 실행 파일을 "사용자 별 제거 프로그램"으로 대체하십시오. 실행될 때 - 예. 사용자가 지금 삭제 한 앱을 사용하려고하면 사용자 설정이 정리됩니다. – MSalters
어떻게 그런 일이 생길 것입니까? 설치하는 동안 현재 사용자의 레지스트리를 수정하고 제거 프로그램을 설치할 수 있지만 그 때 다른 사용자 계정의 설치 제거 프로그램을 설정할 수 없으면 단일 제거 프로그램이 다른 사용자 계정을 끝에 수정할 수 있습니다. – Mordachai
@MSalters : 절대 제거되지 않는 매달림 제거 프로그램을 남겨 둡니다. – Thomas