다음을 통해 공유


Windows 앱 인증 키트 테스트

다음은 데스크톱 앱을 인증하기 위한 테스트 세부 정보입니다. 자세한 내용은 Windows 앱 인증 키트 사용을 참조하세요.

취소 가능한 설치 정리

잔여 파일 및 레지스트리 항목에 대한 앱 및 검사 설치 및 제거합니다.

  • 배경
    • 클린 되돌릴 수 있는 설치를 사용하면 사용자가 앱을 배포하고 제거할 수 있습니다. 이 테스트를 통과하려면 앱에서 다음을 수행해야 합니다.
      • 앱은 앱을 설치하거나 제거한 후 즉시 시스템을 강제로 다시 시작하지 않습니다. 앱의 설치 또는 제거 프로세스는 완료 직후 시스템을 다시 시작할 필요가 없습니다. 이 경우 시스템을 다시 시작해야 하는 경우 사용자는 편의를 위해 시스템을 다시 시작할 수 있어야 합니다.
      • 앱은 8.3 짧은 파일 이름(SFN)에 종속되지 않습니다. 앱의 설치 및 제거 프로세스는 긴 파일 이름 및 폴더 경로를 사용할 수 있어야 합니다.
      • 앱이 자동 설치/제거를 차단하지 않음
      • 앱은 시스템 레지스트리에 필요한 항목을 만듭니다. Windows 인벤토리 도구 및 원격 분석 도구에는 설치된 앱에 대한 완전한 정보가 필요합니다. 앱 설치 관리자는 성공적인 검색 및 제거를 허용하기 위해 올바른 레지스트리 항목을 만들어야 합니다.
    • MSI 기반 설치 관리자를 사용하는 경우 MSI는 자동으로 아래 레지스트리 항목을 만듭니다. MSI 설치 관리자를 사용하지 않는 경우 설치 모듈은 설치 중에 다음 레지스트리 항목을 만들어야 합니다.
      • DisplayName
      • InstallLocation
      • 게시자
      • UninstallString
      • VersionMajor 또는 MajorVersion
      • VersionMinor 또는 MinorVersion
    • 앱은 프로그램 추가/제거에서 모든 항목을 제거해야 합니다.
  • 테스트 세부 정보
    • 이 테스트는 필요한 동작에 대한 앱의 설치 및 제거 프로세스를 검사.
  • 수정 작업
    • 위에서 설명한 요구 사항에 대해 앱의 디자인 및 동작을 검토합니다.

올바른 폴더 테스트에 설치

앱이 프로그램 및 데이터 파일을 올바른 폴더에 쓰는지 확인합니다.

  • 배경
    • 앱은 사용자의 데이터 및 설정을 무단 액세스로부터 보호하면서 필요한 데이터 및 설정에 액세스할 수 있도록 사용자 시스템 및 사용자별 폴더를 올바르게 사용해야 합니다.
  • Program Files 폴더
    • 앱은 기본적으로 Program Files 폴더에 설치되어야 합니다(네이티브 32비트 및 64비트 앱의 경우 %ProgramFiles% 및 x64에서 실행되는 32비트 앱의 경우 %ProgramFiles(x86)%).
    • 참고: 앱은 이 폴더에 대해 구성된 보안 권한 때문에 사용자 데이터 또는 앱 데이터를 Program Files 폴더에 저장해서는 안 됩니다.
    • Windows 시스템 폴더의 ACL은 관리자 계정만 읽고 쓸 수 있도록 허용합니다. 따라서 표준 사용자 계정에는 이러한 폴더에 대한 액세스 권한이 없습니다. 그러나 파일 가상화를 통해 앱은 일반적으로 관리자만 쓸 수 있는 시스템 위치에 구성 파일과 같은 파일을 저장할 수 있습니다. 이 상황에서 프로그램을 표준 사용자로 실행하면 필요한 파일에 액세스할 수 없는 경우 오류가 발생할 수 있습니다.
    • 앱은 알려진 폴더를 사용하여 데이터에 액세스할 수 있는지 확인해야 합니다.
    • 참고: Windows는 Windows에서 앱이 표준 사용자로 실행될 때 앱 호환성을 개선하고 문제를 제거하기 위해 파일 가상화를 제공합니다. 앱은 이후 버전의 Windows에 있는 가상화에 의존해서는 안 됩니다.
  • 사용자별 앱 데이터 폴더
    • "컴퓨터별" 설치에서 앱은 설치 중에 사용자별 데이터를 작성해서는 안 됩니다. 사용자별 설치 데이터는 사용자가 처음으로 앱을 시작할 때만 작성해야 합니다. 설치 시 데이터를 저장할 올바른 사용자 위치가 없기 때문입니다. 설치 후 컴퓨터 수준에서 기본 연결 동작을 수정하려는 앱의 시도는 실패합니다. 대신 사용자 단위 수준에서 기본값을 클레임해야 하므로 여러 사용자가 서로의 기본값을 덮어쓰지 않습니다.
    • 컴퓨터의 다른 사용자와 공유하지 않고 특정 사용자에게만 적용되는 모든 앱 데이터는 Users\username>\<AppData에 저장되어야 합니다.
    • 컴퓨터의 사용자 간에 공유해야 하는 모든 앱 데이터는 ProgramData 내에 저장되어야 합니다.
  • 기타 시스템 폴더 및 레지스트리 키
    • 앱은 Windows 디렉터리 및 하위 디렉터리에 직접 써서는 안 됩니다. 이러한 디렉터리에 글꼴 또는 드라이버와 같은 파일을 설치하는 데 올바른 방법을 사용합니다.
    • 이러한 위치 중 하나 이상에 항목을 추가하는 등 시작 시 앱이 자동으로 시작되지 않아야 합니다.
      • 레지스트리 실행 키 HKLM 및 또는 Software\Microsoft\Windows\CurrentVersion에서 HKCU
      • 레지스트리 실행 키 HKLM 또는 Software\Wow6432Node\Microsoft\windows\CurrentVersion의 HKCU
      • 시작 메뉴 AllPrograms > 시작
  • 테스트 세부 정보
    • 이 테스트는 앱이 Windows에서 제공하는 파일 시스템의 특정 위치를 사용하여 사용자와 관련된 프로그램 및 소프트웨어 구성 요소, 공유 앱 데이터 및 앱 데이터를 저장하는지 확인합니다.
  • 수정 작업
    • 앱에서 시스템의 폴더를 사용하는 방법을 검토하고 올바르게 사용하고 있는지 확인합니다.
  • 예외 및 면제
    • 데스크톱 앱이 GAC(전역 어셈블리 캐시)에 쓰는 경우 면제가 필요합니다(.NET 앱은 어셈블리 종속성을 비공개로 유지하고 어셈블리 공유가 명시적으로 필요하지 않은 경우 앱의 디렉터리에 저장해야 합니다).
    • Programs Files 폴더에 설치하는 것은 SW 기본 사항 범주에서만 데스크톱 SW 패키지가 SW 로고를 달성하기 위한 요구 사항이 아닙니다.

디지털 서명된 파일 테스트

실행 파일 및 디바이스 드라이버를 테스트하여 유효한 디지털 서명이 있는지 확인합니다.

  • 배경
    • 디지털 서명된 파일을 사용하면 파일이 정품인지 확인하고 파일이 변조되었는지 감지할 수 있습니다.
    • 커널 모드 코드 서명 적용은 CI(코드 무결성)라고도 하는 Windows 기능입니다. CI는 메모리에 로드될 때마다 파일의 무결성을 확인하여 Windows의 보안을 향상시킵니다. CI는 악성 코드가 시스템 이진 파일을 수정했는지 여부를 감지하고 커널 모듈의 서명이 올바르게 확인하지 못할 때 진단 및 시스템 감사 로그 이벤트를 생성합니다.
    • 앱에 상승된 권한이 필요한 경우 권한 상승 프롬프트는 관리자 권한 액세스를 요청하는 실행 파일에 대한 컨텍스트 정보를 표시합니다. 앱이 Authenticode 서명되었는지 여부에 따라 사용자에게 동의 프롬프트 또는 자격 증명 프롬프트가 표시될 수 있습니다.
    • 강력한 이름은 프라이빗 키를 안전하게 유지하는 한 타사에서 코드를 스푸핑하는 것을 방지합니다. .NET Framework는 어셈블리를 로드하거나 GAC에 설치할 때 디지털 서명을 확인합니다. 프라이빗 키에 액세스하지 않으면 악의적인 사용자가 코드를 수정하고 다시 서명할 수 없습니다.
  • 테스트 세부 정보
    • 파일 확장명 .exe, .dll, .ocx, .sys, .cpl, .drv 및 .scr과 같은 모든 실행 파일은 Authenticode 인증서로 서명해야 합니다.
    • 앱에서 설치한 모든 커널 모드 드라이버에는 WHQL 또는 DRS 프로그램을 통해 가져온 Microsoft 서명이 있어야 합니다. 모든 파일 시스템 필터 드라이버는 WHQL 서명되어야 합니다.
  • 수정 작업
    • 앱의 실행 파일에 서명합니다.
    • makecert.exe를 사용하여 인증서를 생성하거나 VeriSign, Thawte 또는 Microsoft CA와 같은 상용 CA(인증 기관) 중 하나에서 코드 서명 키를 가져옵니다.
  • 예외 및 면제
    • 면제는 서명되지 않은 제3자 재배포 가능 패키지에 대해서만 고려됩니다. 이 면제를 부여하려면 서명된 버전의 재배포 가능 파일을 요청하는 통신 증명이 필요합니다.
    • Windows 하드웨어 인증을 통해 드라이버를 인증해야 하므로 디바이스 부가 가치 소프트웨어 패키지는 커널 모드 드라이버 인증에서 제외됩니다.

x64 Windows 테스트 지원

앱을 테스트하여 .exe가 설치될 플랫폼 아키텍처용으로 빌드되었는지 확인합니다.

  • 배경
    • 실행 파일은 설치된 프로세서 아키텍처용으로 빌드되어야 합니다. 일부 실행 파일은 다른 프로세서 아키텍처에서 실행될 수 있지만 신뢰할 수 없습니다.
    • 32비트 프로세스는 64비트 DLL을 로드할 수 없고 64비트 프로세스는 32비트 DLL을 로드할 수 없으므로 아키텍처 호환성이 중요합니다. 마찬가지로 64비트 버전의 Windows는 16비트 Windows 기반 애플리케이션 실행을 지원하지 않습니다. 핸들에는 64비트 Windows에 32개의 중요한 비트가 있으므로 16비트 애플리케이션에 전달할 수 없기 때문입니다. 따라서 64비트 버전의 Windows에서 16비트 애플리케이션을 시작하려고 하면 실패합니다.
    • 32비트 디바이스 드라이버는 64비트 버전의 Windows에서 실행할 수 없으므로 64비트 아키텍처로 이식해야 합니다.
    • 사용자 모드 애플리케이션의 경우 64비트 Windows에는 32비트 Windows 애플리케이션이 성능 저하에도 불구하고 64비트 Windows를 실행하는 시스템에서 실행할 수 있는 WOW64가 포함되어 있습니다. 디바이스 드라이버에 해당하는 변환 계층이 없습니다.
    • 64비트 버전의 Windows와의 호환성을 기본 위해 앱은 기본적으로 64비트를 지원해야 합니다. 또는 최소한 32비트 Windows 기반 앱은 64비트 시스템에서 원활하게 실행되어야 합니다.
      • 앱 및 해당 설치 관리자는 16비트 코드를 포함하거나 16비트 구성 요소를 사용해서는 안됩니다.
      • 앱 설정은 64비트 버전의 Windows에서 적절한 드라이버 및 구성 요소를 검색하고 설치해야 합니다.
      • 모든 셸 플러그 인은 64비트 버전의 Windows에서 실행되어야 합니다.
      • WoW64 에뮬레이터에서 실행되는 앱은 Wow64 가상화 메커니즘을 우회하려고 시도해서는 안 됩니다. 앱이 WoW64 에뮬레이터에서 실행 중인지 감지해야 하는 특정 시나리오가 있는 경우 IsWow64Process를 호출하여 실행해야 합니다.
  • 테스트 세부 정보
    • 앱은 16비트 이진 파일을 설치해서는 안 됩니다. 앱은 64비트 컴퓨터에서 실행해야 하는 경우 32비트 커널 모드 드라이버를 설치해서는 안 됩니다.
  • 수정 작업
    • 설치하려는 프로세서 아키텍처에 대한 실행 파일 및 드라이버를 빌드합니다.

OS 버전 검사 테스트

앱이 실행 중인 Windows 버전에 대해 앱이 검사 방법을 테스트합니다.

  • 배경
    • 앱은 향후 Windows 버전과의 호환성을 보장하기 위해 필요한 버전보다 크거나 같은 버전을 테스트하여 OS 버전을 검사.
  • 테스트 세부 정보
    • 다양한 버전의 Windows에서 앱을 실행하여 앱이 어떻게 반응하는지 시뮬레이트합니다.
  • 수정 작업
    • 현재 버전이 앱, 서비스 또는 드라이버에 필요한 버전보다 크거나 같은지 테스트하여 올바른 버전의 Windows를 테스트합니다.
    • 드라이버 설치 관리자 및 제거 모듈은 OS 버전을 검사 않아야 합니다.
  • 예외 및 면제
    • 면제는 다음 조건을 충족하는 앱에 대해 고려됩니다. (데스크톱 앱 인증에만 적용됨)
      • Windows XP, Windows Vista 및 Windows 7에서 실행되는 하나의 패키지로 배달되고 OS 버전을 검사 지정된 운영 체제에 설치할 구성 요소를 결정해야 하는 앱입니다.
      • 승인된 API 호출만 사용하고 필요에 따라 앱 매니페스트에 최소 버전 요구 사항을 나열하여 OS의 최소 버전만 검사 있는 앱(런타임이 아닌 설치 중)입니다.
      • 바이러스 백신 및 방화벽 앱과 같은 보안 앱, 조각 모음 유틸리티 및 백업 앱과 같은 시스템 유틸리티 및 승인된 API 호출만 사용하여 OS 버전을 검사 진단 도구.

UAC(사용자 계정 컨트롤) 테스트

앱을 테스트하여 실행하기 위해 불필요하게 상승된 권한이 필요하지 않은지 확인합니다.

  • 배경
    • 사용자가 관리자인 경우에만 작동하거나 설치하는 앱은 사용자가 불필요하게 상승된 권한으로 앱을 실행하도록 강제하여 맬웨어가 사용자의 컴퓨터에 진입할 수 있도록 허용합니다.
    • 사용자가 항상 상승된 액세스 토큰을 사용하여 앱을 실행해야 하는 경우 앱은 기만적이거나 악의적인 코드의 진입점으로 서버를 사용할 수 있습니다. 이 맬웨어는 운영 체제를 쉽게 수정하거나 다른 사용자에게 영향을 줄 수 있습니다. 관리이스트래터는 앱을 설치하고 컴퓨터에서 앱이나 스크립트를 실행할 수 있으므로 전체 관리자 액세스 권한이 있는 사용자를 제어하는 것은 거의 불가능합니다. IT 관리자는 항상 사용자가 표준 사용자로 로그온하는 "표준 데스크톱"을 만드는 방법을 찾고 있습니다. 표준 데스크톱은 지원 센터 비용을 크게 줄이고 IT 오버헤드를 줄입니다.
    • 대부분의 애플리케이션은 런타임에 관리자 권한이 필요하지 않습니다. 표준 사용자 계정은 해당 계정을 실행할 수 있어야 합니다. Windows 앱에는 앱을 실행하는 데 필요한 권한을 OS에 알려주는 실행 수준을 정의하기 위한 매니페스트(포함 또는 외부)가 있어야 합니다. 앱 매니페스트는 .dll 파일이 아닌 .exe 파일에만 적용됩니다. UAC(사용자 계정 컨트롤)는 프로세스를 만드는 동안 DLL을 검사하지 않습니다. UAC 규칙은 Microsoft 서비스 적용되지 않습니다. 앱 매니페스트는 포함되거나 외부일 수 있습니다.
    • 매니페스트를 만들려면 이름이 app_name.exe.manifest>인 파일을 <만들고 EXE와 동일한 디렉터리에 저장합니다. 앱에 내부 매니페스트가 있는 경우 외부 매니페스트는 무시됩니다.
      • 예를 들어 requestedExecutionLevel <level=""asInvoker | highestAvailable | require관리istrator"" uiAccess=""true|false""/>
      • 앱의 기본 프로세스는 표준 사용자(asInvoker)로 실행되어야 합니다. 모든 관리 기능은 관리 권한으로 실행되는 별도의 프로세스로 이동해야 합니다.
      • 상승된 권한이 필요한 사용자 연결 앱은 Authenticode에 서명되어야 합니다.
  • 테스트 세부 정보
    • 모든 사용자 연결 exes는 asInvoker 특성으로 표시되어야 합니다. highestAvailable 또는 require관리istrator로 표시된 경우 올바르게 authenticode 서명되어야 합니다. 모든 앱 exe에는 uiAccess 특성이 true로 설정되지 않아야 합니다. 서비스로 실행되는 모든 exe는 이 특정 검사 제외됩니다.
  • 수정 작업
    • 앱의 매니페스트 파일에서 올바른 항목 및 사용 권한 수준을 검토합니다.
  • 예외 및 면제
    • 권한 상승(require관리istrator 또는 highestAvailable)을 사용하여 기본 프로세스를 실행하는 앱에는 면제가 필요합니다. 기본 프로세스는 앱에 대한 사용자의 진입점을 제공하는 프로세스입니다.
    • 면제는 다음 시나리오에 대해 고려됩니다.
      • 실행 수준이 highestAvailable, require관리istrator 또는 둘 다로 설정된 관리istrative 또는 시스템 도구입니다.
      • 접근성 또는 UI 자동화 프레임워크 앱만 UIAccess 플래그를 TRUE로 설정하여 UIPI(사용자 인터페이스 권한 격리)를 무시합니다. 앱 사용률을 제대로 시작하려면 이 플래그가 Authenticode에 서명되어야 하며 프로그램 파일과 같은 파일 시스템의 보호된 위치에 있어야 합니다.

시스템 다시 시작 관리자 메시지 준수

앱이 시스템 종료 및 다시 시작 메시지에 응답하는 방법을 테스트합니다.

금고 모드 테스트

드라이버 또는 서비스가 안전 모드에서 시작하도록 구성되어 있는지 테스트합니다.

  • 배경
    • 금고 모드를 사용하면 사용자가 Windows 문제를 진단하고 해결할 수 있습니다. 운영 체제의 기본 작업에 필요하거나 진단 및 복구 서비스를 제공하는 데 필요한 드라이버 및 서비스만 안전 모드로 로드되어야 합니다. 안전 모드로 다른 파일을 로드하면 운영 체제 문제를 해결하기가 더 어려워집니다.
    • 기본적으로 Windows와 함께 미리 설치된 드라이버 및 서비스만 안전 모드에서 시작합니다. 시스템에서 기본 작업 또는 진단 및 복구 목적으로 요구하지 않는 한 다른 모든 드라이버와 서비스를 사용하지 않도록 설정해야 합니다.
  • 테스트 세부 정보
    • 앱에서 설치한 드라이버는 안전 모드로 로드되도록 표시해서는 안 됩니다.
  • 수정 작업
    • 드라이버 또는 서비스가 안전 모드에서 시작되지 않아야 하는 경우 레지스트리 키에서 앱의 항목을 제거합니다.
  • 예외 및 면제
    • 안전 모드에서 시작해야 하는 운전자와 서비스는 인증을 받아야 합니다. 면제 요청에는 금고Boot 레지스트리 키에 추가할 각 드라이버 및 서비스가 포함되어야 하며 드라이버 또는 서비스가 안전 모드에서 실행되어야 하는 이유에 대한 기술적 이유를 설명해야 합니다. 앱 설치 관리자는 이러한 모든 드라이버 및 서비스를 다음 레지스트리 키에 등록해야 합니다.
      • HKLM/System/CurrentControlSet/Control/금고Boot/Minimal
      • HKLM/System/CurrentControlSet/Control/금고Boot/Network
  • 참고: 안전 모드에서 시작하려는 드라이버와 서비스를 테스트하여 오류 없이 안전 모드에서 작동하는지 확인해야 합니다.

다중 사용자 세션 테스트

여러 세션에서 동시에 실행할 때 앱의 동작 방식을 테스트합니다.

  • 배경
    • Windows 사용자는 동시 세션을 실행할 수 있어야 합니다. 앱은 로컬 또는 원격으로 여러 세션에서 실행되는 경우 앱의 일반적인 기능이 부정적인 영향을 받지 않도록 해야 합니다. 앱 설정 및 데이터 파일은 사용자별이어야 하며 사용자의 개인 정보 및 기본 설정은 사용자의 세션으로 제한되어야 합니다.
  • 테스트 세부 정보
    • 앱의 여러 동시 인스턴스를 실행하여 다음을 테스트합니다.
      • 동시에 실행되는 앱의 여러 인스턴스는 서로 격리됩니다.
    • 즉, 한 인스턴스의 사용자 데이터가 다른 인스턴스에 표시되지 않습니다. 활성 사용자 세션에서는 비활성 사용자 세션의 소리를 들을 수 없습니다. 여러 앱 인스턴스가 공유 리소스를 사용하는 경우 앱은 충돌이 없는지 확인해야 합니다.
      • 앱이 여러 사용자에 대해 설치된 경우 올바른 폴더 및 레지스트리 위치에 데이터를 저장합니다.
      • 앱은 로컬 및 원격 액세스 모두에 대해 여러 사용자 세션(빠른 사용자 전환)에서 실행할 수 있습니다.
    • 이를 위해 앱은 앱의 기존 인스턴스에 대한 다른 TS(터미널 서비스) 세션을 검사 합니다. 앱이 여러 사용자 세션 또는 원격 액세스를 지원하지 않는 경우 해당 세션에서 시작할 때 사용자에게 이를 명확하게 말해야 합니다.
  • 수정 작업
    • 앱이 사용자 프로필 또는 HKCU와 같은 사용자별 데이터 저장소에 시스템 차원의 데이터 파일 또는 설정을 저장하지 않는지 확인합니다. 이 경우 다른 사용자가 해당 정보를 사용할 수 없습니다.
    • 앱은 설치 중에 시스템 전체 구성 및 데이터 파일을 설치하고 사용자가 실행할 때 설치 후 사용자별 파일 및 설정을 만들어야 합니다.
    • 앱이 로컬 또는 원격으로 여러 동시 세션을 차단하지 않는지 확인합니다. 앱은 여러 동시 세션에 대해 검사 또는 차단하기 위해 전역 뮤텍스 또는 다른 명명된 개체에 의존해서는 안 됩니다.
    • 앱에서 사용자당 여러 동시 세션을 허용할 수 없는 경우 사용자별 또는 세션별 네임스페이스를 뮤텍스 및 기타 명명된 개체에 사용합니다.

충돌 및 중단 테스트

인증 테스트 동안 앱을 모니터하여 크래시가 발생하거나 작동이 중단되는 경우를 기록합니다.

  • 배경
    • 충돌 및 중단과 같은 앱 오류는 사용자에게 큰 혼란을 줍니다. 이러한 오류를 제거하면 앱 안정성과 안정성이 향상되고 전반적으로 사용자에게 더 나은 앱 환경을 제공합니다. 앱이 응답하지 않거나 크래시가 발생하면 사용자 데이터가 손실되고 성능이 저하될 수 있습니다.
  • 테스트 세부 정보
    • 인증 테스트 전체에서 앱 복원력 및 안정성을 테스트합니다.
    • Windows 앱 인증 키트는 IApplicationActivationManager::ActivateApplication을 호출하여 Windows 스토어 앱을 시작합니다. ActivateApplication에서 앱을 시작하려면 UAC(사용자 계정 컨트롤)을 사용할 수 있어야 하며 화면 해상도가 1024 x 768 또는 768 x 1024 이상이어야 합니다. 두 조건 중 하나가 충족되지 않으면 앱이 이 테스트에 실패합니다.
  • 수정 작업
    • 테스트 컴퓨터에서 UAC를 사용할 수 있는지 확인합니다.
    • 화면이 충분히 큰 컴퓨터에서 테스트를 실행하고 있는지 확인합니다.
    • 앱이 시작되지 않는 경우 테스트 플랫폼이 ActivateApplication의 필수 조건을 충족하면 활성화 이벤트 로그를 검토하여 문제를 해결할 수 있습니다. 이벤트 로그에서 이러한 항목을 찾으려면 다음을 수행합니다.
      1. eventvwr.exe를 열고 \Windows Logs\Application 노드로 이동합니다.
      2. 보기를 필터링하여 이벤트 ID: 5900-6000.
      3. 로그 항목에서 앱이 시작되지 않은 이유를 설명하는 정보를 검토합니다.
    • 문제가 있는 파일을 식별하고 문제를 해결합니다. 앱을 다시 빌드하고 다시 테스트합니다.
  • 추가 리소스

호환성 및 복원력 테스트

  • 배경
    • 이 검사 앱의 두 가지 측면의 유효성을 검사합니다. 앱 기본 실행 파일(예: 사용자 연결 앱 진입점)은 호환성을 위해 매니페스트되어야 하고 올바른 GUID를 선언해야 합니다. 이 새 테스트를 지원하기 위해 보고서에는 '호환성 및 복원력' 아래에 하위 노드가 있습니다. 이러한 조건 중 하나 또는 둘 다 누락된 경우 앱이 실패합니다.
  • 테스트 세부 정보
    • 호환성: Windows 호환 모드, AppHelp 메시지 또는 기타 호환성 수정을 사용하지 않고 앱이 완벽하게 작동해야 합니다. 호환성 매니페스트를 사용하면 Windows에서 다양한 버전의 OS에서 앱에 적절한 호환성 동작을 제공할 수 있습니다.
    • AppInit: 앱은 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs 레지스트리 키에 로드할 DLL을 나열해서는 안 됩니다.
    • 스위치백: 애플리케이션은 스위치백 매니페스트를 제공해야 합니다. 매니페스트가 없으면 Windows 앱 인증 키트에 경고 메시지가 표시됩니다. Windows 앱 인증 키트는 매니페스트에 유효한 OS GUID가 포함되어 있는지도 확인합니다.
  • 수정 작업
    • 호환성 수정을 사용하는 앱의 구성 요소를 수정합니다.
    • 앱이 해당 기능에 대한 호환성 수정에 의존하지 않는지 확인합니다.
    • 앱이 매니페스트되고 호환성 섹션에 적절한 값이 포함되어 있는지 확인합니다.
  • 추가 정보
    • 자세한 내용은 AppInit DLL을 참조하세요.

Windows 보안 모범 사례 테스트

  • 배경
    • 앱은 기본 Windows 보안 설정을 변경해서는 안 됩니다.
  • 테스트 세부 정보
    • 공격 Surface Analyzer를 실행하여 앱의 보안을 테스트합니다. 이 방법은 테스트별로 실패 범주를 추가하는 것입니다. 예를 들어 보안 테스트의 일부 범주에는 다음이 포함될 수 있습니다.
      • 초기화 실패
      • 보안 아키텍처 오류
      • 버퍼 오버플로 오류 발생 가능
      • 충돌 실패
    • 자세한 내용은 여기를 참조 하세요.
  • 수정 작업
    • 테스트로 식별되는 문제를 해결하고 해결합니다. 앱을 다시 빌드하고 다시 테스트합니다.

Windows 보안 기능 테스트

  • 배경
    • 애플리케이션은 Windows 보안 기능을 옵트인해야 합니다. 기본 Windows 보안 보호 기능을 변경하면 고객이 더 큰 위험에 노출될 수 있습니다.
  • 테스트 세부 정보
    • BinScope 이진 분석기를 실행하여 앱 보안을 테스트합니다. 자세한 내용은 여기를 참조 하세요.
  • 수정 작업
    • 테스트로 식별되는 문제를 해결하고 해결합니다. 앱을 다시 빌드하고 다시 테스트합니다.

높은 DPI 테스트

Win32 앱은 DPI를 인식하는 것이 좋습니다. 다양한 높은 DPI 표시 설정에서 앱 UI를 일관되게 멋지게 보이게 하는 것이 중요합니다. 높은 DPI 표시 설정에서 실행되는 비 DPI 인식 앱은 UI 요소의 잘못된 크기 조정, 잘린 텍스트 및 흐릿한 이미지와 같은 문제가 있을 수 있습니다. DPI 인식 앱을 선언하는 방법에는 두 가지가 있습니다. 하나는 DPI를 선언하는 것입니다.

  • 배경
    • 이 검사 앱의 두 가지 측면인 기본 실행 파일의 유효성을 검사합니다. 예를 들어 사용자 연결 앱 진입점은 HIGH-DPI 인식을 위해 명시되어야 하며 HIGH-DPI를 지원하기 위해 적절한 API를 호출해야 합니다. 이러한 조건 중 하나 또는 둘 다 누락된 경우 앱이 실패합니다. 이 검사 데스크톱 보고서에 새 섹션을 소개합니다. 아래 예제를 참조하세요.
  • 테스트 세부 정보
    • 테스트는 다음 중 어느 것을 감지하면 경고를 생성합니다.
      • 기본 EXE는 매니페스트에서 DPI 인식을 선언하지 않으며 SetProcessDPIAware API를 호출하지 않습니다. (DPI 인식 매니페스트를 추가하는 것을 잊어버린 경우 개발자에게 경고).
      • 기본 EXE는 매니페스트에서 DPI 인식을 선언하지 않지만 SetProcessDPIAware API를 호출합니다(API를 호출하는 대신 매니페스트를 사용하여 DPI 인식을 선언하도록 개발자에게 경고).
      • 기본EXE는 매니페스트에서 DPI 인식을 선언하지만 SetProcessDPIAware API도 호출합니다(API를 호출할 필요가 없음을 개발자에게 경고).
      • 기본 않는 이진 파일의 경우 API를 호출하는 경우 경고를 표시합니다(API 호출은 권장되지 않음).
  • 수정 작업
    • SetProcessDPIAware() 함수의 사용은 권장되지 않습니다. DLL이 초기화 중에 DPI 설정을 캐시하는 경우 앱에서 SetProcessDPIAware()를 호출하면 경합 상태가 생성될 수 있습니다. DLL에서 SetProcessDPIAware() 함수를 호출하는 것도 좋지 않습니다.
  • 추가 정보