다음을 통해 공유


기본 애플리케이션 관리

컴퓨터별 기본값을 관리하기 위해 Windows XP 이상 버전의 Windows에 SPAD( 프로그램 액세스 및 컴퓨터 기본값 설정 ) 기능이 추가되었습니다. Windows Vista는 SPAD 외에도 사용자별 기본 애플리케이션 개념과 제어판 기본 프로그램 항목을 도입했습니다.

중요

이 항목은 Windows 10 적용되지 않습니다. Windows 10 기본 파일 연결이 작동하는 방식이 변경되었습니다. 자세한 내용은 이 게시물에서 Windows 10 기본 앱을 처리하는 방법에 대한 변경 내용 섹션을 참조하세요.

 

사용자별 기본 설정은 시스템의 개별 사용자 계정에만 적용됩니다. 사용자별 기본 설정이 있는 경우 해당 계정의 해당 컴퓨터별 기본값보다 우선합니다. Windows 8 현재 파일 형식 및 프로토콜 기본값에 대한 확장성 시스템은 사용자별로 엄격하게 적용되며 컴퓨터별 기본값은 무시됩니다. 사용자별 기본값을 설정하도록 Windows 8 SPAD도 변경되었습니다.

  • Windows 8 이전 버전의 Windows를 실행하는 시스템에서 새로 만든 사용자 계정은 사용자별 기본값이 설정될 때까지 컴퓨터별 기본값을 받습니다. Windows Vista 이상에서는 사용자가 제어판 기본 프로그램 항목을 사용하여 사용자별 기본값을 설정하거나 변경할 수 있습니다. 또한 애플리케이션이 처음으로 실행될 때 애플리케이션 첫 실행 및 기본값 섹션의 지침에 따라 사용자별 기본값을 설정할 수 있습니다.
  • Windows 8 실행하는 시스템에서 새로 만든 사용자 계정은 처음부터 사용자별 기본값을 사용하고 애플리케이션 첫 실행 및 기본값 섹션에 설명된 대로 처음 실행 시 해당 기본값 설정은 더 이상 지원되지 않습니다.

애플리케이션은 Windows Vista 이상에서 기본 프로그램으로 제공되려면 SPAD 및 기본 프로그램 기능을 모두 등록해야 합니다.

이 항목에서는 WINDOWS Vista 이상에서 애플리케이션 기본값을 등록하고 관리하는 데 필요한 단계에 대한 빠른 가이드와 함께 ISV(독립 소프트웨어 공급업체)를 제공합니다. 각 섹션의 항목에 대한 자세한 문서에 대한 링크가 제공됩니다.

제어판 기본 프로그램 항목

기본 프로그램은시작 메뉴와 제어판 직접 액세스할 수 있는 Windows Vista에 도입된 기능입니다. 표준 사용자 권한(상승되지 않음)과 함께 작동하며 사용자 및 애플리케이션이 사용자별 기본값을 관리할 수 있도록 설계된 새로운 인프라를 제공합니다. 사용자의 경우 기본 프로그램은 시스템의 모든 애플리케이션에서 기본값, 파일 연결 및 자동 실행 설정을 관리하는 통합되고 쉽게 액세스할 수 있는 방법을 제공합니다. 애플리케이션의 경우 기본 프로그램 API에서 제공하는 사용자별 scope 사용하면 다음과 같은 이점이 있습니다.

  • 권한 상승 없음

    애플리케이션은 기본값을 클레임하기 위해 권한을 상승시킬 필요가 없습니다.

  • 좋은 시민권

    다중 사용자 컴퓨터에서 각 사용자는 서로 다른 기본 애플리케이션을 선택할 수 있습니다.

  • 기본 관리

    기본 프로그램 API는 레지스트리에 직접 쓰지 않고 기본 상태 자체 검사하고 손실된 설정을 회수하기 위한 안정적이고 일관된 메커니즘을 제공합니다. 그러나 Windows 8 현재 애플리케이션은 기본 설정을 더 이상 변경할 수 없으므로 기본 상태 쿼리하지 않는 것이 좋습니다. 이러한 변경 내용은 사용자가 수행할 수 있습니다.

애플리케이션이 기본값을 효과적으로 관리할 수 있도록 하려면 애플리케이션을 잠재적인 기본 프로그램으로 등록해야 합니다. 기본 프로그램 API 등록 및 사용에 대한 자세한 내용은 기본 프로그램을 참조하세요.

기본 프로그램은 다음 두 가지 기능도 제공합니다.

  • 재사용 가능한 기본값 UI

    프로그램 기본값(기본 프로그램 설정) 및 파일 연결(프로그램과 파일 형식 또는 프로토콜 연결)의 UI를 다시 사용하고 애플리케이션 내에서 호출할 수 있습니다. 이를 통해 애플리케이션은 기본값을 관리하기 위한 표준 사용자 환경을 제공하고 ISV가 사용자 지정 또는 동등한 UI를 개발할 필요가 없도록 합니다.

  • URL 및 마케팅 정보 포함

    제어판 기본 프로그램 항목의 기본 프로그램 설정 페이지의 일부로 애플리케이션은 마케팅 정보와 공급업체의 웹 사이트에 대한 링크를 제공할 수 있습니다. 이 URL은 애플리케이션이 서명된 Authenticode 인증서에서 파생됩니다. 이렇게 하면 이 링크의 오용 및 무단 교체가 방지됩니다. 애플리케이션에 포함된 URL이 포함된 Authenticode 인증서가 있는 경우 Windows UI는 포함된 URL을 표시합니다. ISV는 이 기능을 활용하여 업데이트 및 기타 다운로드를 위해 사용자를 웹 사이트로 안내해야 합니다.

프로그램 액세스 및 컴퓨터 기본값 설정

SPAD(프로그램 액세스 및 컴퓨터 기본값)를 설정 하면 관리자는 해당 컴퓨터의 모든 새 사용자가 상속하는 컴퓨터 전체 기본값을 관리할 수 있습니다. Windows 8 전에 SPAD를 통해 관리자는 시스템에서 프로그램이 제거될 때 파일 연결이 끊어질 경우 파일 연결을 복구할 수 있었습니다. 그러나 Windows 8 SPAD는 사용자별 기본값에만 영향을 줍니다.

SPAD에서 애플리케이션을 등록하는 방법에 대한 자세한 내용은 SPAD(프로그램 액세스 및 컴퓨터 기본값 설정) 작업 및클라이언트 형식으로 프로그램 등록을 참조하세요. 특정 변경 내용 및 새 권장 사항은 다음 섹션에서 설명합니다.

SPAD에서 기본값 설정

사용자별 기본값은 컴퓨터별 기본값을 재정의합니다.

  • Windows 8 이전: SPAD에서 설정된 기본값(컴퓨터별)은 사용자별 해당 기본값이 설정된 경우 사용자가 볼 수 없습니다. 사용자가 사용자별 기본값을 설정하지 않은 경우 시스템은 해당 컴퓨터 기본값을 사용합니다. 컴퓨터의 새 사용자 계정은 처음에 컴퓨터 기본값을 상속합니다. 사용자가 애플리케이션을 처음 실행할 때 애플리케이션은 사용자에게 사용자별 기본값을 할당하라는 메시지를 표시해야 합니다. 애플리케이션 첫 실행 및 기본값을 참조하세요.
  • Windows 8: 모든 기본값은 사용자 단위이며 컴퓨터별 기본 설정은 무시됩니다. 애플리케이션은 더 이상 기본 선택 항목을 설정할 수 없으므로 사용자가 해당 기본값을 할당하는 단계를 안내할 수 없습니다.

사전 Windows 8 애플리케이션이 SPAD에서 기본값으로 설정을 구현하는 경우 다음 지침을 따라야 합니다.

  • 애플리케이션은 SPAD를 통해 컴퓨터 수준 기본값만 클레임해야 합니다.
  • 애플리케이션은 SPAD를 통해 사용자별 기본값을 클레임 해서는 안 됩니다.

Windows 8 애플리케이션이 SPAD에서 기본값으로 설정을 구현하는 경우 SPAD에서 사용되는 것과 동일한 애플리케이션 이름을 사용하여 파일 형식 및 프로토콜을 기본 프로그램에 등록해야 합니다. 이렇게 하면 SPAD의 변경 내용이 현재 사용자에 대한 해당 기본 프로그램 항목의 변경 내용으로 반영됩니다.

SPAD에서 액세스 숨기기

SPAD에서 가능한 각 기본값에 대한 액세스 숨기기 옵션은 다음 두 가지 방법 중 하나로 액세스됩니다.

  • 모든 Microsoft 기본값에 대한 액세스를 제거하는 비 Microsoft 기본값 범주를 선택합니다.
  • 사용자 지정 범주를 선택하고 이 프로그램에 대한 액세스 사용 검사 상자의 선택을 취소합니다.

이전에는 이러한 작업 중 하나를 수행하여 시스템의 적절한 애플리케이션에 대한 모든 진입점을 제거했습니다. 이 상황에 대한 구체적인 지침에는 다음 위치에서 바로 가기 및 아이콘을 제거해야 합니다.

  • 데스크톱
  • 시작 메뉴
  • 빠른 실행 표시줄(Windows Vista 및 이전 버전에만 해당)
  • 알림 영역
  • 바로 가기 메뉴
  • 폴더 작업 대역

공급업체는 애플리케이션의 액세스 숨기기 콜백 함수에서 이러한 지침을 구현하는 것이 좋습니다.

SPAD에서 대체 Access 메서드 숨기기

일부 레거시 애플리케이션의 경우 액세스 숨기기의 전체 구현이 실용적이지 않을 수 있습니다. 동일한 효과를 달성하지만 사용자가 쉽게 되돌릴 수 없는 대체 방법은 애플리케이션을 제거하는 것입니다. 다음은 이를 구현하기 위한 샘플 동작 및 예제 코드를 보여줍니다.

이 대안에 권장되는 사용자 환경은 다음과 같습니다.

  • 사용자가 SPAD에서 이 프로그램에 대한 액세스 사용 상자를 선택 취소하면 다음 UI가 표시됩니다.

    프로그램에 대한 액세스 숨기기에 대한 vista 대화 상자

  • 사용자가 확인을 클릭하면 사용자가 애플리케이션을 제거할 수 있도록 제어판 프로그램 및 기능 항목이 표시됩니다.

  • Windows XP 사용자에게는 다음 대화 상자가 표시됩니다.

    프로그램에 대한 액세스 숨기기에 대한 windows xp 대화 상자

  • Windows XP 사용자가 확인을 클릭하면 사용자가 애플리케이션을 제거할 수 있도록 제어판 프로그램 추가 또는 제거 항목이 표시됩니다.

다음 코드는 앞에서 설명한 대로 액세스 숨기기 기능에 재사용 가능한 구현을 제공합니다. Windows XP, Windows Vista 및 Windows 7에서 사용할 수 있습니다.

#include <windows.h>
#include <shlwapi.h>
#include <strsafe.h>

PCWSTR c_pszMessage1 = L"To hide access to this program, you need to uninstall it by ";
PCWSTR c_pszMessage2 = L"using\n%s in Control Panel.\n\nWould you like to start %s?";
PCWSTR c_pszApplicationName  = L"Sample App";

int _tmain(int argc, WCHAR* argv[])
{
    OSVERSIONINFO version;
    version.dwOSVersionInfoSize = sizeof(version);

    if (GetVersionEx(&version))
    {
        PCWSTR pszCPLName = NULL;

        if (version.dwMajorVersion >= 6)
        {
            // Windows Vista and later
            pszCPLName = L"Programs and Features";
        }
        else if (version.dwMajorVersion == 5 &&
                 version.dwMinorVersion == 1)
        {
            // XP
            pszCPLName = L"Add/Remove Programs";
        }

        if (pszCPLName != NULL)
        {
            WCHAR szMessage[256], szScratch[256];
            if (SUCCEEDED(StringCchPrintf(szScratch, 
                                          ARRAYSIZE(szScratch), 
                                          c_pszMessage2, 
                                          pszCPLName, 
                                          pszCPLName)))
            {
                if (SUCCEEDED(StringCchCopy(szMessage, 
                                            ARRAYSIZE(szMessage), 
                                            c_pszMessage1)))
                {
                    if (SUCCEEDED(StringCchCat(szMessage, 
                                               ARRAYSIZE(szMessage), 
                                               szScratch)))
                    {
                        if (IDOK == MessageBox(NULL, 
                                               szMessage, 
                                               c_pszApplicationName, 
                                               MB_OKCANCEL))
                        {
                            ShellExecute(NULL, 
                                         NULL, 
                                         L"appwiz.cpl", 
                                         NULL, 
                                         NULL, 
                                         SW_SHOWNORMAL);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

애플리케이션 진입점 등록

애플리케이션에는 운영 체제 내에 많은 진입점이 있을 수 있습니다. 진입점에 권장되는 위치는 다음과 같습니다.

  • 데스크톱
  • 시작 메뉴
  • 빠른 실행 표시줄(Windows Vista 및 이전 버전에만 해당)
  • 알림 영역
  • 바로 가기 메뉴
  • 폴더 작업 대역

이 섹션에서는 다음과 같은 특정 영역에 중점을 둡니다.

연결 프로그램

사용자가 바로 가기로 열기 메뉴를 사용하면 특정 파일 형식을 처리할 수 있는 애플리케이션을 선택할 수 있습니다. Open With를 사용하여 애플리케이션에서 파일을 한 번 열 수 있지만 해당 파일 이름 확장명의 기본값을 설정하는 데 사용할 수도 있습니다. 따라서 사용자가 해당 애플리케이션을 선택 항목으로 표시할 수 있도록 애플리케이션은 항상 Open With 에 등록해야 합니다. 애플리케이션은 Open With에 대한 파일 형식과 프로토콜을 모두 등록할 수 있습니다. 기본 프로그램 프레임워크에서 프로토콜을 등록하는 애플리케이션은 프로토콜에 대한 Open With 옵션에 자동으로 추가됩니다.

Open With 등록에 대한 자세한 내용은 파일 연결 소개를 참조하세요.

시작 메뉴 및 빠른 실행 표시줄

사용자가 더 쉽게 검색할 수 있도록 애플리케이션은 Windows의 다양한 위치에 바로 가기를 추가할 수 있습니다. 바로 가기를 추가하는 가장 일반적인 위치는 시작 메뉴입니다. Windows Vista 이상에서 애플리케이션은 숨겨진 폴더 %ProgramData%\Microsoft\Windows\Start Menu\Programs에 바로 가기를 만들어 모든 사용자에 대한 시작 메뉴의 프로그램 목록에 표시합니다. 일반적으로 애플리케이션은 바로 가기가 포함된 하위 폴더를 추가합니다.

브라우저 및 전자 메일 프로그램의 경우 Windows Vista 시작 메뉴에는 프로그램 목록 외부의 인터넷 및 전자 메일이라는 두 개의 전용 링크도 제공됩니다. 애플리케이션이 해당 범주에 등록되면 기본 프로그램 프레임워크는 해당 링크를 통해 시작된 항목을 관리할 수 있습니다.

참고

인터넷전자 메일 전용 시작 메뉴 링크는 Windows 7부터 더 이상 존재하지 않습니다.

 

검색 가능성을 더욱 높이기 위해 애플리케이션은 바탕 화면 및 빠른 실행 표시줄에 바로 가기를 추가할 수도 있습니다. 애플리케이션은 시작 메뉴, 데스크톱 또는 빠른 실행 표시줄에 아이콘을 추가하기 전에 사용자에게 권한을 요청해야 합니다(일반적으로 설치 중 또는 처음 실행 시).

참고

빠른 실행 표시줄은 Windows 7을 기준으로 더 이상 사용할 수 없습니다. Windows 7 대안은 애플리케이션을 작업 표시줄에 고정하는 것이지만, 사용자가 엄격하게 선택하기 때문에 프로그래밍 방식으로 고정을 수행할 수 없습니다.

 

자세한 내용은 다음 항목을 참조하세요.

애플리케이션 설치 및 기본값

Windows XP 이후 애플리케이션 설치 절차는 기본적으로 변경되지 않았으며, Windows 8 이전 버전의 Windows를 실행하는 시스템에 대한 새로운 지침은 예외입니다. 설치 시 컴퓨터별 기본값을 사용하지만 해당 사용자가 애플리케이션을 처음 실행할 때까지 사용자별 기본값을 설정하지 않습니다. ( 애플리케이션 첫 실행 및 기본값을 참조하세요.) 애플리케이션을 설치하는 사람이 의도한 사용자가 아닌 상황이 있으므로 설치 중에 애플리케이션에서 사용자별 기본값을 설정해서는 안 됩니다. Windows 8 현재 컴퓨터별 기본값은 지원되지 않으며 애플리케이션은 사용자별 기본 설정을 변경할 수 없습니다.

설치하는 동안 애플리케이션은 이진 파일을 하드 디스크에 복사하고 해당 ProgID를 레지스트리에 기록해야 합니다. 또한 애플리케이션은 처리할 후보인 모든 파일 연결에 대해 현재 기본 프로그램 및 Open With 에 등록해야 합니다. 애플리케이션은 OpenWithProgIds 하위 키를 사용하여 Open With에 등록할 수 있습니다.

자세한 내용은 다음 항목을 참조하세요.

애플리케이션 업그레이드 및 기본값

많은 애플리케이션은 시간이 지남에 따라 스스로 업그레이드할 수 있습니다. 이 업그레이드 절차는 사용자에게 예기치 않은 변경이 될 수 있으므로 사용자별 기본값의 상태를 변경해서는 안 됩니다. 그러나 애플리케이션이 컴퓨터 수준 파일 연결을 검사 손상된 경우 복구할 수 있습니다.

애플리케이션 첫 실행 및 기본값

참고

Windows 8 기준으로 시스템은 모든 애플리케이션을 대신하여 이 절차를 처리합니다. 애플리케이션 자체는 더 이상 기본값을 쿼리하고 변경할 수 없습니다. 사용자만 그렇게 할 수 있습니다. 따라서 애플리케이션은 현재 기본값을 쿼리하거나 메커니즘을 통해 해당 기본값을 변경하려고 시도해서는 안 됩니다. 그러나 애플리케이션은 IApplicationAssociationRegistrationUI 인터페이스의 LaunchAdvancedAssociationUI 메서드를 호출하여 제어판 기본 프로그램의 진입점을 제공할 수 있습니다.

 

Windows Vista에서 사용자별 기본값이 도입된 경우 인기 있는 파일 이름 확장명을 경합하는 애플리케이션은 모두 이러한 확장을 클레임할 수 있는 일반적인 사용자 환경을 제공하는 것이 중요합니다. 이러한 기본값은 이제 사용자의 컨텍스트에서 설정되므로 설치 후 사용자가 프로그램을 실행할 때만 기본 가능성으로 표시됩니다.

사용자별 기본값을 설정하는 지침은 다음과 같습니다. 특정 사용자에 대해 애플리케이션을 처음 실행하는 경우 해당 애플리케이션은 기본값 및 파일 연결 자체에 대한 사용자 기본 설정을 요청해야 합니다.

권장 UI는 사용자에게 다음과 같은 두 가지 명확한 선택 항목을 제공해야 합니다.

  1. 애플리케이션에서 클레임하려는 모든 기본값을 적용합니다. 이 옵션은 개인 정보 보호 또는 자동 업데이트 설정과 같은 애플리케이션의 다른 기본 속성을 설정할 수도 있습니다. 이 옵션을 사용하면 애플리케이션이 등록된 모든 기본값을 클레임할 수 있습니다.
  2. 기본 선택 영역 및 프로그램 설정을 개별적으로 수락하거나 수락하지 않음으로써 사용자 지정합니다. 이 옵션은 사용자가 기본 옵션에 대해 세분화된 선택을 할 수 있는 추가 UI를 제공합니다.

자세한 내용은 기본 프로그램을 참조하세요.

참고

Windows 8 현재 지원되지 않습니다.

 

애플리케이션이 Windows Vista 이상에서 기본 프로그램에 등록되면 특정 API를 애플리케이션에서 사용할 수 있게 됩니다. instance 경우 애플리케이션이 기본 프로그램인지 여부를 검사 할 수 있습니다. IApplicationAssociationRegistration 인터페이스는 이 작업을 수행하는 메서드를 제공합니다.

기본값을 클레임하려는 모든 애플리케이션은 먼저 사용자에게 요청해야 하며 권한 없이 기본값을 클레임하지 않아야 합니다. 사용자에게 애플리케이션을 기본값으로 만들 것인지 아니면 현재 기본값을 그대로 둘 것인지를 묻는 메시지가 표시됩니다. 사용자가 선택한 후에 이 질문을 다시 묻지 않는 옵션도 있어야 합니다.

자세한 내용은 기본 프로그램을 참조하세요.

애플리케이션 호환성 팁

이 섹션에서는 Windows의 기본 프로그램 환경과 관련된 몇 가지 애플리케이션 호환성 팁을 제공합니다.

Per-User 가상화 트리거 방지

UAC(사용자 계정 제어) 환경을 사용하면 최상의 고객 환경을 위해 항상 표준 사용자 권한으로만 애플리케이션을 실행해야 합니다. 보안상의 이유로 표준 사용자 권한 수준이 있는 애플리케이션은 레지스트리의 특정 부분과 특정 시스템 파일에 쓰지 못하도록 차단됩니다. Windows Vista 이상 버전의 Windows는 애플리케이션이 전환할 수 있도록 임시 애플리케이션 호환성(AppCompat) 계층을 제공합니다. 레지스트리 또는 시스템 파일에 쓰려는 차단된 시도는 애플리케이션이 계속 실행되도록 "가상화"되지만 시스템의 중요한 영역은 변경되지 않습니다. 그러나 애플리케이션은 장기 솔루션으로 AppCompat 기술을 사용해서는 안 됩니다. 대신 애플리케이션은 사용 가능한 많은 도구를 사용하여 표준 사용자 권한으로 성공적으로 실행될 수 있는지 확인해야 합니다. 이 작업을 수행하려면 애플리케이션의 일부 다시 프로그래밍이 필요할 수 있지만 장기 호환성을 위해 수행해야 합니다.

프로그램 호환성 도우미에서 AppCompat 경고 또는 차단 방지

PCA(프로그램 호환성 도우미)는 Windows Vista 이상에서 제공됩니다. 그 목적은 호환성 문제가 있는 이전 프로그램이 더 잘 작동하도록 자동화된 방법을 제공하는 것입니다. PCA는 알려진 문제에 대한 프로그램을 모니터링합니다. 문제가 감지되면 사용자에게 문제를 알리고 사용자가 프로그램을 다시 실행하기 전에 효과적인 솔루션을 적용할 것을 제안합니다. 이러한 경고 또는 블록이 표시되지 않도록 ISV는 사용 가능한 많은 도구를 사용하여 애플리케이션이 Windows Vista, Windows 7 이상과 호환되도록 해야 합니다.

이전 Windows 운영 체제 버전 지원

기본 프로그램 인프라는 Windows Vista 이전의 Windows 운영 체제에서 사용할 수 없습니다. 따라서 애플리케이션이 새 기본 프로그램 인프라로 이동하면 이전 버전의 Windows와의 호환성을 유지하기 위해 이전 애플리케이션 기본값 코드를 유지해야 합니다. 애플리케이션은 설치의 일부로 운영 체제 버전 검사 실행하여 실행할 애플리케이션 기본 코드를 결정해야 합니다.

Windows XP에서 Windows Vista 이상으로 업그레이드를 지원하려면 응용 프로그램에서 Windows XP를 실행하는 컴퓨터에 설치하는 경우에도 기본 프로그램에 필요한 모든 레지스트리 항목을 추가해야 합니다. 등록은 Windows XP를 실행하는 컴퓨터에 영향을 주지 않지만 나중에 컴퓨터를 업그레이드하면 애플리케이션이 이미 등록되어 프레임워크를 활용할 수 있습니다.

자세한 내용은 OSVERSIONINFO를 참조하세요.

추가 리소스

파일 연결에 대한 모범 사례

파일 연결 샘플 시나리오

기본 프로그램

SPAD(프로그램 액세스 및 컴퓨터 기본값 설정) 작업