보관: Windows Desktop Apps v1.1에 대한 인증 요구 사항

문서 버전: 1.1

문서 날짜: 2012년 1월 26일

이 문서에는 Windows 8 데스크톱 앱 인증 프로그램에 참여하기 위해 데스크톱 앱이 충족해야 하는 기술 요구 사항 및 자격 자격이 포함되어 있습니다. Windows 7의 경우 이 프로그램을 Windows 소프트웨어 로고 프로그램이라고 합니다.

환영합니다!

Windows 플랫폼은 광범위한 제품 및 파트너 에코시스템을 지원합니다. 제품에 Windows 로고를 표시하는 것은 Microsoft와 회사 간의 품질에 대한 관계와 공유된 약속을 나타냅니다. 고객은 Windows 브랜드가 호환성 표준을 충족하고 Windows 플랫폼에서 잘 작동하도록 보장하므로 제품에서 Windows 브랜드를 신뢰합니다. Windows 앱 인증을 성공적으로 통과하면 Windows 호환성 센터에서 앱을 표시할 수 있으며 Windows 스토어에서 데스크톱 앱 참조를 나열하는 데 필요한 단계이기도 합니다.

Windows 앱 인증 프로그램은 Windows 브랜드를 탑재한 타사 앱이 Windows를 실행하는 PC에 쉽게 설치되고 신뢰할 수 있도록 하는 데 도움이 되는 프로그램 및 기술 요구 사항으로 구성됩니다. 고객은 구매한 시스템의 안정성, 호환성, 안정성, 성능 및 품질을 소중히 여깁니다. Microsoft는 PC용 Windows 플랫폼에서 실행되도록 설계된 소프트웨어 앱에 대한 이러한 요구 사항을 충족하기 위해 투자에 중점을 둡니다. 이러한 노력에는 환경의 일관성을 위한 호환성 테스트, 향상된 성능 및 Windows 소프트웨어를 실행하는 PC의 보안 강화가 포함됩니다. Microsoft 호환성 테스트는 업계 파트너와 공동으로 설계되었으며 산업 개발 및 소비자 수요에 따라 지속적으로 개선되고 있습니다.

Windows 앱 인증 키트는 이러한 요구 사항을 준수하는지 확인하는 데 사용되며 Windows 7 소프트웨어 로고 프로그램의 유효성 검사에 사용되는 WSLK를 대체합니다. Windows 앱 인증 키트는 Windows SDK(소프트웨어 개발 키트)에 포함된 구성 요소 중 하나입니다.

앱 자격

앱이 Windows 8 데스크톱 앱 인증을 받으려면 다음 조건과 이 문서에 나열된 모든 기술 요구 사항을 충족해야 합니다.

  • 독립 실행형 앱이어야 합니다.
  • 로컬 Windows 8.1 컴퓨터에서 실행해야 합니다.
  • 인증된 Windows Server 앱의 클라이언트 구성 요소일 수 있습니다.
  • 코드 및 기능이 완료되어야 합니다.

1. 앱은 호환 가능하고 복원력이 있습니다.

앱이 충돌하거나 응답을 중지하는 경우 많은 사용자 불만이 발생합니다. 앱은 복원력 있고 안정적이어야 하며 이러한 오류를 제거하면 소프트웨어가 더 예측 가능하고, 기본 달성 가능하고, 성능이 뛰어나고, 신뢰할 수 있습니다.

1.1 앱은 Windows 호환성 모드, AppHelp 메시지 또는 기타 호환성 수정에 종속되지 않아야 합니다.
1.2 앱이 VB6 런타임에 종속되지 않아야 합니다.
1.3 앱은 HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows AppInit_dlls 사용하여 Win32 API 호출을 가로채기 위해 임의의 DLL을 로드해서는 안 됩니다.

2. 앱은 Windows 보안 모범 사례를 준수해야 합니다.

Windows 보안 모범 사례를 사용하면 Windows 공격 노출을 방지하는 데 도움이 됩니다. 공격 표면은 악의적인 공격자가 대상 소프트웨어의 취약성을 활용하여 운영 체제를 악용하는 데 사용할 수 있는 진입점입니다. 최악의 보안 취약성 중 하나는 권한 상승입니다.

2.1 앱은 강력하고 적절한 ACL 을 사용하여 실행 파일 2.2 앱이 강력하고 적절한 ACL 을 사용하여 디렉터리를 보호해야 합니다. 2.3 앱은 강력하고 적절한 ACL 을 사용하여 레지스트리 키를 보호해야 합니다. 2.4 앱은 강력하고 적절한 ACL 을 사용하여 개체 2.5를 포함하는 디렉터리를 보호해야 합니다. 앱은 변조에 취약한 서비스에 대한 관리자가 아닌 액세스를 줄여야 합니다. 2.6 앱은 빠른 서비스를 방지해야 합니다. 24시간마다 두 번 이상 다시 시작합니다.
**참고: 액세스 권한이 필요한 엔터티에만 액세스 권한을 부여해야 합니다.**

Windows 앱 인증 프로그램은 ACL 및 서비스가 Windows 시스템을 위험에 빠뜨리지 않는 방식으로 구현되었는지 확인하여 Windows 공격 표면이 노출되지 않는지 확인합니다.

3. 앱에서 Windows 보안 기능 지원

Windows 운영 체제에는 시스템 보안 및 개인 정보를 지원하는 많은 기능이 있습니다. 앱은 운영 체제의 무결성을 기본 이러한 기능을 지원해야 합니다. 잘못 컴파일된 앱은 버퍼 오버런을 유발하여 서비스 거부를 발생하거나 악성 코드 실행을 허용할 수 있습니다.

3.1 강력한 이름의 어셈블리에 대한 보안 액세스를 보장하기 위해 앱에서 AllowPartiallyTrustedCallersAttribute(APTCA)를 사용하지 않아야 합니다.
3.2 안전한 예외 처리를 위해 /금고SEH 플래그를 사용하여 앱을 컴파일해야 합니다.
3.3 데이터 실행을 방지하려면 /NXCOMPAT 플래그를 사용하여 앱을 컴파일해야 합니다.
3.4 ASLR(주소 공간 레이아웃 임의화)을 위해 /DYNAMICBASE 플래그를 사용하여 앱을 컴파일해야 합니다.
3.5 앱이 공유 PE 섹션을 읽거나 쓰지 않아야 합니다.

4. 앱은 시스템 다시 시작 관리자 메시지를 준수해야 합니다.

사용자가 종료를 시작할 때 일반적으로 종료가 성공하는 것을 보려는 강한 욕구가 있습니다. 그들은 서둘러 사무실을 떠나 그냥 자신의 컴퓨터를 해제 할 수 있습니다. 앱은 종료를 차단하지 않음으로써 이러한 욕구를 존중해야 합니다. 대부분의 경우 종료는 중요하지 않을 수 있지만 앱은 중요한 종료 가능성에 대비해야 합니다.

4.1 앱에서 중요한 종료를 적절하게 처리해야 합니다.
심각한 종료 시 FALSE를 WM_QUERYENDSESSION 반환하는 앱은 WM_ENDSESSION 전송되고 닫힙니다. 반면 WM_QUERYENDSESSION 대한 응답으로 시간이 초과된 앱은 종료됩니다.

4.2 GUI 앱은 다시 시작에 대비하여 TRUE를 즉시 반환해야 합니다.
WM\_QUERYENDSESSION 및 LPARAM = ENDSESSION\_CLOSEAPP(0x1). 콘솔 앱은 SetConsoleCtrlHandler를 호출하여 종료 알림을 처리할 함수를 지정할 수 있습니다. 서비스 앱은 RegisterServiceCtrlHandlerEx를 호출하여 종료 알림을 받을 함수를 지정할 수 있습니다.
4.3 앱은 30초 이내에 0을 반환하고 종료해야 합니다.
LPARAM = ENDSESSION\_CLOSEAPP(0x1)이 있는 WM\_ENDSESSION. 최소한 앱은 사용자 데이터를 저장하여 준비하고 다시 시작한 후 필요한 정보를 명시해야 합니다.
4.4 Ctrl\_C\_EVENT 알림을 수신하는 콘솔 앱은 즉시 종료되어야 4.5 드라이버는 시스템 종료 이벤트를 거부해서는 안 됩니다.
**참고: 중단될 수 없는 작업으로 인해 종료를 차단해야 하는 앱은 사용자에게 이유를 설명해야 합니다.** ShutdownBlockReasonCreate를 사용하여 사용자에게 이유를 설명하는 문자열을 등록합니다. 작업이 완료되면 앱은 ShutdownBlockReasonDestroy를 호출하여 시스템을 종료할 수 있음을 나타냅니다.

5. 앱은 클린 되돌릴 수 있는 설치를 지원해야 합니다.

클린, 되돌릴 수 있는 설치를 통해 사용자는 시스템에서 앱을 성공적으로 관리(배포 및 제거)할 수 있습니다.

5.1 앱이 클린, 되돌릴 수 있는 설치를 제대로 구현해야 합니다.
설치에 실패하면 앱에서 롤백하고 컴퓨터를 이전 상태로 복원할 수 있어야 합니다.

5.2 앱에서 사용자가 컴퓨터를 즉시 다시 시작하도록 강요해서는 안 됩니다.
설치 또는 업데이트가 끝날 때 컴퓨터를 다시 시작하는 것이 유일한 옵션이 되어서는 안 됩니다. 사용자는 나중에 다시 시작할 기회가 있어야 합니다.
5.3 앱은 8.3 SFN(짧은 파일 이름) 5.4 앱이 자동 설치/제거 5.5를 차단해서는 안 됩니다. 앱 설치 관리자는 성공적인 검색 및 제거를 허용하기 위해 올바른 레지스트리 항목을 만들어야 합니다.
Windows 인벤토리 도구 및 원격 분석 도구에는 설치된 앱에 대한 완전한 정보가 필요합니다. MSI 기반 설치 관리자를 사용하는 경우 MSI는 자동으로 아래 레지스트리 항목을 만듭니다. MSI 설치 관리자를 사용하지 않는 경우 설치 모듈은 설치 중에 다음 레지스트리 항목을 만들어야 합니다.
  • DisplayName
  • InstallLocation
  • 게시자
  • UninstallString
  • VersionMajor 또는 MajorVersion
  • VersionMinor 또는 MinorVersion

6. 앱은 파일 및 드라이버에 디지털 서명해야 합니다.

Authenticode 디지털 서명을 사용하면 사용자가 소프트웨어가 정품인지 확인할 수 있습니다. 또한 파일이 바이러스에 감염된 경우와 같이 변조되었는지 여부를 감지할 수 있습니다. 커널 모드 코드 서명 적용은 CI(코드 무결성)라고 하는 Windows 기능으로, 파일 이미지가 메모리에 로드될 때마다 파일의 무결성을 확인하여 운영 체제의 보안을 향상시킵니다. CI는 악성 코드가 시스템 이진 파일을 수정했는지 여부를 검색합니다. 커널 모듈의 서명이 제대로 확인하지 못할 때 진단 및 시스템 감사 로그 이벤트도 생성합니다.

6.1 모든 실행 파일(.exe, .dll, .ocx, .sys, .cpl, .drv, .scr)은 Authenticode 인증서로 서명해야 합니다.
6.2 앱에서 설치한 모든 커널 모드 드라이버에는 Windows 하드웨어 인증 프로그램을 통해 가져온 Microsoft 서명이 있어야 합니다. 모든 파일 시스템 필터 드라이버는 Microsoft에서 서명해야 합니다.
6.3 예외 및 면제
면제는 드라이버를 제외한 서명되지 않은 제3자 재배포 가능 패키지에 대해서만 고려됩니다. 이 면제를 부여하려면 서명된 버전의 재배포 가능 파일을 요청하는 통신 증명이 필요합니다.

7. 앱은 운영 체제 버전 검사 따라 설치 또는 앱 시작을 차단하지 않습니다.

기술적 제한이 없는 경우 고객이 앱을 설치하거나 실행하는 것을 인위적으로 차단하지 않는 것이 중요합니다. 일반적으로 앱이 Windows Vista 이상 버전의 Windows용으로 작성된 경우 운영 체제 버전을 검사 필요가 없습니다.

7.1 앱이 같음을 위해 버전 검사 수행해서는 안 됩니다.
특정 기능이 필요한 경우 기능 자체를 사용할 수 있는지 여부를 검사. Windows XP가 필요한 경우 Windows XP 이상용으로 검사(>= 5.1). 이러한 방식으로 검색 코드는 이후 버전의 Windows에서 계속 작동합니다. 드라이버 설치 관리자 및 제거 모듈은 운영 체제 버전을 검사 않아야 합니다.

7.2 예외 및 면제는 아래 조건을 충족하는 앱에 대해 고려됩니다.
  • Windows XP, Windows Vista 및 Windows 7에서도 실행되고 운영 체제 버전을 검사 지정된 운영 체제에 설치할 구성 요소를 결정하는 하나의 패키지로 제공되는 앱입니다.
  • 승인된 API 호출만 사용하여 운영 체제의 최소 버전만 검사 앱 매니페스트의 최소 버전 요구 사항을 올바르게 나열하는 앱은 설치 중에만 런타임이 아닙니다.
  • 승인된 API 호출만 사용하여 운영 체제 버전을 검사 보안 앱(바이러스 백신, 방화벽 등), 시스템 유틸리티(예: 조각 모음, 백업 및 진단 도구).

8. 앱은 안전 모드에서 서비스 또는 드라이버를 로드하지 않습니다.

금고 모드를 사용하면 Windows를 진단하고 문제를 해결할 수 있습니다. 드라이버와 서비스는 기본 시스템 작동에 필요한 스토리지 디바이스 드라이버나 바이러스 백신 검사기와 같은 진단 및 복구 목적의 경우가 아니면 안전 모드에서 로드되도록 설정되지 않아야 합니다. 기본적으로 Windows가 안전 모드인 경우 Windows와 함께 미리 설치된 드라이버 및 서비스만 시작합니다.

  • 8.1 예외 및 면제
    안전 모드에서 시작해야 하는 운전자와 서비스는 면제가 필요합니다. 면제 요청에는 금고Boot 레지스트리 키에 대한 각 적용 가능한 드라이버 또는 서비스 쓰기가 포함되어야 하며 앱 또는 서비스가 안전 모드에서 실행되어야 하는 기술적 이유를 설명해야 합니다. 앱 설치 관리자는 다음 레지스트리 키를 사용하여 이러한 모든 드라이버 및 서비스를 등록해야 합니다.
    - HKLM/System/CurrentControlSet/Control/금고Boot/Minimal - HKLM/System/CurrentControlSet/Control/금고Boot/Network

참고: 이러한 드라이버와 서비스를 테스트하여 오류 없이 안전 모드에서 작동하는지 확인해야 합니다.

9. 앱은 사용자 계정 제어 지침을 따라야 합니다.

일부 Windows 앱은 관리자 계정의 보안 컨텍스트에서 실행되며 앱은 종종 과도한 사용자 권한 및 Windows 권한을 요청합니다. 리소스에 대한 액세스를 제어하면 사용자가 시스템을 제어하고 원치 않는 변경으로부터 보호할 수 있습니다. 원치 않는 변경은 컴퓨터를 제어하는 루트킷과 같은 악의적이거나 권한이 제한된 사용자가 수행한 작업의 결과일 수 있습니다. 리소스에 대한 액세스를 제어하는 가장 중요한 규칙은 사용자가 필요한 작업을 수행하는 데 필요한 최소한의 액세스 표준 사용자 컨텍스트를 제공하는 것입니다. UAC(사용자 계정 제어) 지침에 따라 시스템이 보안 위험에 지속적으로 노출되지 않고 앱에서 필요할 때 필요한 권한을 앱에 제공합니다. 대부분의 앱은 런타임에 관리자 권한이 필요하지 않으며 표준 사용자로 실행하면 됩니다.

9.1 앱에는 실행 수준을 정의하고 실행하기 위해 앱에 필요한 권한을 운영 체제에 알려주는 매니페스트가 있어야 합니다.
앱 매니페스트 표시는 DLL이 아닌 EXE에만 적용됩니다. 이는 UAC가 프로세스를 만드는 동안 DLL을 검사하지 않기 때문입니다. UAC 규칙은 Windows 서비스에 적용되지 않는다는 점도 주목할 가치가 있습니다. 매니페스트는 포함되거나 외부일 수 있습니다.
매니페스트를 만들려면 이름이 app_name.exe.manifest>인 파일을 <만들고 EXE와 동일한 디렉터리에 저장합니다. 앱에 내부 매니페스트가 있는 경우 외부 매니페스트는 무시됩니다. 예시:
<requestedExecutionLevel level="asInvoker | highestAvailable | require관리istrator"" uiAccess=""true|false""/>

9.2 앱의 기본 프로세스를 표준 사용자(asInvoker)로 실행해야 합니다.
모든 관리 기능은 관리 권한으로 실행되는 별도의 프로세스로 이동해야 합니다. 시작 메뉴의 프로그램 그룹을 통해 액세스할 수 있고 권한 상승이 필요한 앱과 같은 사용자 연결 앱은 Authenticode에 서명되어야 합니다.
9.3 예외 및 면제
권한 상승(require관리istrator 또는 highestAvailable)을 사용하여 기본 프로세스를 실행하는 앱에는 면제가 필요합니다. 기본 프로세스는 앱에 대한 사용자의 진입점으로 식별됩니다. 면제는 다음 시나리오에 대해 고려됩니다.
  • 실행 수준이 highestAvailable 및/또는 require로 설정된 관리시제 도구 또는 시스템 도구관리istrator
  • 접근성 또는 UI 자동화 프레임워크 앱만 UIAccess 플래그를 true로 설정하여 UIPI(사용자 인터페이스 권한 격리)를 무시합니다. 앱 사용률을 제대로 시작하려면 이 플래그는 Authenticode에 서명되어야 하며 파일 시스템의 보호된 위치인 Program Files에 있어야 합니다.

10. 앱은 기본적으로 올바른 폴더에 설치해야 합니다.

사용자가 선택한 위치에 앱을 설치하는 옵션을 기본 동안 파일의 기본 설치 위치에 일관되고 안전한 환경을 가져야 합니다. 또한 여러 사람이 서로의 데이터와 설정을 손상시키거나 덮어쓰지 않고 동일한 컴퓨터를 사용할 수 있도록 앱 데이터를 올바른 위치에 저장해야 합니다. Windows는 사용자와 관련된 프로그램 및 소프트웨어 구성 요소, 공유 앱 데이터 및 앱 데이터를 저장할 파일 시스템의 특정 위치를 제공합니다.

10.1 기본적으로 Program Files 폴더에 앱을 설치해야 합니다.
%ProgramFiles%의 네이티브 32비트 및 64비트 앱의 경우 x64에서 실행되는 32비트 앱의 경우 %ProgramFiles(x86)%입니다. 이 폴더에 대해 구성된 보안 권한 때문에 사용자 데이터 또는 앱 데이터를 이 위치에 저장해서는 안 됩니다.

10.2 앱은 시작 시 자동으로 시작하지 않아야 합니다.
예를 들어 앱은 다음 중 어느 것을 설정해서는 안 됩니다.
  • 레지스트리 실행 키 HKLM 및 또는 Software\Microsoft\Windows\CurrentVersion에서 HKCU
  • 레지스트리 실행 키 HKLM 또는 Software\Wow6432Node\Microsoft\windows\CurrentVersion의 HKCU
  • 시작 메뉴 AllPrograms > 시작
10.3 컴퓨터의 사용자 간에 공유되어야 하는 앱 데이터는 ProgramData 10.4 특정 사용자에게만 적용되고 컴퓨터의 다른 사용자와 공유되지 않는 앱 데이터 내에 저장되어야 합니다. Users\\username>\\<AppData 10.5 앱은 "Windows" 디렉터리 및 또는 하위 디렉터리에 직접 쓰지 않아야 합니다.
글꼴 또는 드라이버와 같은 파일을 설치하는 데 올바른 방법을 사용합니다.
10.6 앱은 컴퓨터별 설치에서 설치하는 동안이 아니라 처음 실행 시 사용자 데이터를 작성해야 합니다.
앱이 설치되면 데이터를 저장할 올바른 사용자 위치가 없습니다. 설치 후 컴퓨터 수준에서 기본 연결 동작을 수정하려는 앱의 시도는 실패합니다. 대신 사용자 단위 수준에서 기본값을 클레임해야 하므로 여러 사용자가 서로의 기본값을 덮어쓰지 않습니다.
10.7 예외 및 면제
GAC(전역 어셈블리 캐시) .NET 앱에 쓰는 앱은 어셈블리 종속성을 비공개로 유지하고 어셈블리 공유가 명시적으로 필요하지 않은 한 앱 디렉터리에 저장해야 합니다.

11. 앱은 다중 사용자 세션을 지원해야 합니다.

Windows 사용자는 충돌 또는 중단 없이 동시 세션을 실행할 수 있어야 합니다.

11.1 앱은 로컬 또는 원격으로 여러 세션에서 실행할 때 앱의 정상적인 기능이 부정적인 영향을 받지 않도록 해야 합니다.
11.2 앱의 설정 및 데이터 파일이 사용자 간에 유지되어서는 안 됩니다.
11.3 사용자의 개인 정보 및 기본 설정은 사용자 세션으로 격리되어야 합니다.
11.4 앱 인스턴스를 서로 격리해야 합니다.
즉, 한 인스턴스의 사용자 데이터가 앱의 다른 인스턴스에 표시되지 않습니다. 활성 사용자 세션에서는 비활성 사용자 세션의 소리를 들을 수 없습니다. 여러 앱 인스턴스가 공유 리소스를 사용하는 경우 앱은 충돌이 없는지 확인해야 합니다.

11.5 여러 사용자에 대해 설치된 앱은 올바른 폴더 및 레지스트리 위치에 데이터를 저장해야 합니다.
UAC 요구 사항을 참조하세요.
11.6 사용자 앱은 로컬 및 원격 액세스 11.7에 대해 여러 사용자 세션(빠른 사용자 전환)에서 실행할 수 있어야 합니다. 앱은 앱의 기존 인스턴스에 대한 다른 TS(터미널 서비스) 세션을 검사 합니다.
**참고:** 앱이 여러 사용자 세션 또는 원격 액세스를 지원하지 않는 경우 이러한 종류의 세션에서 시작할 때 이를 명확하게 명시해야 합니다.

12. 앱은 x64 버전의 Windows를 지원해야 합니다.

64비트 하드웨어가 일반화됨에 따라 사용자는 앱 개발자가 앱을 64비트로 마이그레이션하여 64비트 아키텍처의 이점을 활용하거나 32비트 버전의 앱이 64비트 버전의 Windows에서 잘 실행되기를 기대합니다.

12.1 앱은 기본적으로 64비트를 지원해야 합니다. 또는 최소한 32비트 Windows 기반 앱이 64비트 시스템에서 원활하게 실행되어야 64비트 버전의 Windows와의 호환성을 기본
12.2 앱 및 해당 설치 관리자가 16비트 코드를 포함하거나 16비트 구성 요소를 사용해서는 안 됩니다.
12.3 앱 설정에서 64비트 아키텍처에 적합한 드라이버 및 구성 요소를 검색하고 설치해야 합니다.
12.4 모든 셸 플러그 인은 64비트 버전의 Windows에서 실행되어야 합니다.
WoW64 에뮬레이터에서 실행되는 12.5 앱은 Wow64 가상화 메커니즘을 전복하거나 바이패스하려고 시도해서는 안 됩니다.
앱이 WoW64 에뮬레이터에서 실행 중인지 여부를 감지해야 하는 특정 시나리오가 있는 경우 IsWow64Process를 호출하여 실행해야 합니다.

결론

이러한 요구 사항이 진화함에 따라 아래 수정 기록의 변경 내용을 확인합니다. 안정적인 요구 사항은 최상의 작업을 수행하는 데 중요하므로, Microsoft는 변경 내용이 지속 가능한지 확인하고 계속해서 앱을 보호하고 개선하는 것을 목표로 합니다.

훌륭한 고객 경험을 제공하기 위한 우리의 노력에 동참해 주셔서 다시 한번 감사드립니다.

수정 기록

Date Version 수정 설명 문서에 연결
2011년 12월 20일 1.0 미리 보기용 문서의 초기 초안입니다.
2012년 1월 26일 1.1 섹션 #2로 업데이트합니다. 1.1

데스크톱 앱 인증에 대해 자세히 알아보기

요구 사항 설명 기타 세부 정보
호환성 및 복원력 충돌 및 중단은 사용자에게 큰 혼란을 줍니다. 앱은 복원력 있고 안정적일 것으로 예상되며, 이러한 오류를 제거하면 소프트웨어가 더 예측 가능하고, 기본 달성 가능하고, 성능이 뛰어나고, 신뢰할 수 있습니다. Windows Vista, Windows 7 및 Windows 8 운영 체제
애플리케이션 검증 도구
AppInit DLL
Windows 보안 모범 사례 준수 Windows 보안 모범 사례를 사용하면 Windows 공격 노출을 방지하는 데 도움이 됩니다. 공격 표면은 악의적인 공격자가 대상 소프트웨어의 취약성을 활용하여 운영 체제를 악용하는 데 사용할 수 있는 진입점입니다. 최악의 보안 취약성 중 하나는 권한 상승입니다. Attack Surface Analyzer
Access Control 목록
지원 Windows 보안 기능 Windows 운영 체제는 시스템 보안 및 개인 정보를 지원하기 위한 많은 조치를 구현했습니다. 애플리케이션은 OS의 무결성을 기본 위해 이러한 조치를 지원해야 합니다. 부적절하게 컴파일된 애플리케이션은 버퍼 오버런을 발생시킬 수 있으며 이로 인해 서비스 거부 또는 악성 코드 실행이 발생할 수 있습니다. BinScope 도구 참조
시스템 다시 시작 관리자 메시지 준수 사용자가 종료를 시작할 때 대부분의 경우 종료가 성공하는 것을 보려는 강한 욕구가 있습니다. 그들은 서둘러 사무실을 떠나 "그냥 원하는"자신의 컴퓨터를 해제 할 수 있습니다. 앱은 종료를 차단하지 않음으로써 이러한 욕구를 존중해야 합니다. 대부분의 경우 종료는 중요하지 않을 수 있지만 앱은 중요한 종료 가능성에 대비해야 합니다. Windows Vista의 애플리케이션 종료 변경 내용
관리자 개발 다시 시작
취소 가능 설치 정리 클린, 되돌릴 수 있는 설치를 통해 사용자는 시스템에서 앱을 성공적으로 관리(배포 및 제거)할 수 있습니다. 방법: ClickOnce 애플리케이션의 필수 구성 요소 설치
64비트 시스템에 애플리케이션 설치
파일 및 드라이버에 디지털 서명 Authenticode 디지털 서명을 사용하면 사용자가 소프트웨어가 정품인지 확인할 수 있습니다. 또한 파일이 바이러스에 감염된 경우와 같이 변조되었는지 여부를 감지할 수 있습니다. 커널 모드 코드 서명 적용은 CI(코드 무결성)라고 하는 Windows 기능으로, 파일 이미지가 메모리에 로드될 때마다 파일의 무결성을 확인하여 운영 체제의 보안을 향상시킵니다. CI는 악성 코드가 시스템 이진 파일을 수정했는지 여부를 검색합니다. 커널 모듈의 서명이 제대로 확인하지 못할 때 진단 및 시스템 감사 로그 이벤트도 생성합니다. Windows의 커널 모듈에 대한 디지털 서명
운영 체제 버전 검사 따라 설치 또는 앱 시작을 차단하지 마세요. 기술적 제한이 없는 경우 고객이 앱을 설치하거나 실행하는 것을 인위적으로 차단하지 않는 것이 중요합니다. 일반적으로 앱이 Windows Vista 이상 릴리스용으로 작성된 경우 운영 체제 버전을 검사 이유가 없어야 합니다. 운영 체제 버전 관리
금고 모드에서 서비스 및 드라이버 로드 안 함 금고 모드를 사용하면 Windows를 진단하고 문제를 해결할 수 있습니다. 드라이버와 서비스는 기본 시스템 작동에 필요하거나(예: 스토리지 디바이스 드라이버) 진단 및 복구 목적의 경우(예: 바이러스 백신 검사기)가 아니면 안전 모드에서 로드되도록 설정되지 않아야 합니다. 기본적으로 안전 모드는 Windows에 미리 설치되지 않은 대부분의 드라이버 및 서비스를 시작하지 않습니다. 시스템에서 기본 작업 또는 진단 및 복구 목적으로 요구하지 않는 한 기본 다시 사용하지 않도록 설정해야 합니다. 운영 체제가 금고 모드에서 실행 중인지 확인
UAC(사용자 계정 컨트롤) 지침 준수 일부 Windows 앱은 관리자 계정의 보안 컨텍스트에서 실행되며 많은 경우 과도한 사용자 권한과 Windows 권한이 필요합니다. 리소스에 대한 액세스를 제어하면 사용자가 원치 않는 변경으로부터 시스템을 제어할 수 있습니다(예: 컴퓨터를 은밀하게 인수하는 루트킷 또는 제한된 권한이 있는 사용자의 작업(예: 회사 컴퓨터에 금지 소프트웨어를 설치하는 직원)과 같은 원치 않는 변경은 악의적일 수 있습니다.) 리소스에 대한 액세스를 제어하는 가장 중요한 규칙은 사용자가 필요한 작업을 수행하는 데 필요한 최소한의 액세스 표준 사용자 컨텍스트를 제공하는 것입니다. UAC 지침에 따라 시스템이 보안 위험에 지속적으로 노출되지 않고 필요할 때 필요한 권한을 앱에 제공합니다. 사용자 계정 컨트롤
UAC: 애플리케이션 업데이트 지침
기본적으로 올바른 폴더에 설치 사용자가 선택한 위치에 앱을 설치하는 옵션을 기본 동안 파일의 기본 설치 위치에 일관되고 안전한 환경을 가져야 합니다. 또한 여러 사람이 서로의 데이터와 설정을 손상시키거나 덮어쓰지 않고 동일한 컴퓨터를 사용할 수 있도록 앱 데이터를 올바른 위치에 저장해야 합니다. 설치/제거 요구 사항 요약
다중 사용자 세션 지원 Windows 사용자는 충돌 또는 중단 없이 동시 세션을 실행할 수 있어야 합니다. 원격 데스크톱 서비스 프로그래밍 지침
x64 버전의 Windows 지원 64비트 하드웨어가 더 널리 보급됨에 따라 사용자는 앱 개발자가 앱을 64비트로 마이그레이션하여 64비트 아키텍처의 이점을 활용하거나 32비트 버전의 앱이 64비트 버전의 Windows에서 잘 실행되기를 기대합니다. 애플리케이션 호환성: Windows Vista 64비트

참고 항목