Delen via


Windows App Certification Kit-tests

Hieronder vindt u testdetails voor het certificeren van desktop-apps. Raadpleeg Using the Windows App Certification Kitvoor meer informatie.

Omkeerbare installatie opschonen

Installeert en verwijdert de app en controleert op restbestanden en registervermeldingen.

  • Achtergrond
    • Met een schone, omkeerbare installatie kunnen gebruikers apps implementeren en verwijderen. Als u deze test wilt doorstaan, moet de app het volgende doen:
      • De app dwingt het systeem niet onmiddellijk opnieuw op te starten na het installeren of verwijderen van de app. Het installatie- of verwijderingsproces van een app mag nooit nodig hebben dat het systeem opnieuw wordt opgestart nadat het is voltooid. Als dit vereist dat het systeem opnieuw wordt opgestart, moeten gebruikers het systeem op hun gemak opnieuw kunnen opstarten.
      • De app is niet afhankelijk van 8.3 korte bestandsnamen (SFN). De installatie- en verwijderingsprocessen van de app moeten lange bestandsnamen en mappaden kunnen gebruiken.
      • De app blokkeert installatie/installatie op de achtergrond niet
      • De app maakt de vereiste vermeldingen in het systeemregister. Voor Windows-inventarisprogramma's en telemetriehulpprogramma's is volledige informatie over geïnstalleerde apps vereist. App-installatieprogramma's moeten de juiste registervermeldingen maken om geslaagde detectie en verwijderingen mogelijk te maken.
    • Als u een MSI-installatieprogramma gebruikt, maakt MSI automatisch de onderstaande registervermeldingen. Als u geen MSI-installatieprogramma gebruikt, moet de installatiemodule de volgende registervermeldingen maken tijdens de installatie:
      • DisplayName
      • InstallLocation
      • Uitgever
      • UninstallString
      • VersionMajor of MajorVersion
      • VersionMinor of MinorVersion
    • De app moet alle vermeldingen in Programma's toevoegen/verwijderen verwijderen.
  • Testdetails
    • Met deze test worden de installatie- en verwijderingsprocessen van de app gecontroleerd op het vereiste gedrag.
  • Corrigerende actie
    • Bekijk het ontwerp en gedrag van de app op basis van de hierboven beschreven vereisten.

Installeren op de juiste mappentest

Controleert of de app het programma en gegevensbestand naar de juiste mappen schrijft.

  • Achtergrond
    • Apps moeten gebruikerssysteem en mappen per gebruiker correct hebben, zodat ze toegang hebben tot de gegevens en instellingen die nodig zijn, terwijl de gegevens en instellingen van de gebruiker worden beveiligd tegen onbevoegde toegang.
  • Mappen met programmabestanden
    • De app moet standaard zijn geïnstalleerd in de map Program Files (%ProgramFiles% voor systeemeigen 32-bits en 64-bits apps, en %ProgramFiles(x86)% voor 32-bits apps die worden uitgevoerd op x64).
    • Opmerking: De app mag geen gebruikersgegevens of app-gegevens opslaan in een map Program Files vanwege de beveiligingsmachtigingen die voor deze map zijn geconfigureerd.
    • Met de ACL's in Windows-systeemmappen kunnen alleen beheerdersaccounts deze lezen en schrijven. Als gevolg hiervan hebben standaardgebruikersaccounts geen toegang tot deze mappen. Met bestandsvirtualisatie kunnen apps echter een bestand, zoals een configuratiebestand, opslaan op een systeemlocatie die doorgaans alleen kan worden geschreven door beheerders. Het uitvoeren van programma's als een standaardgebruiker in deze situatie kan leiden tot fouten als ze geen toegang hebben tot een vereist bestand.
    • Apps moeten bekende mappen gebruiken om ervoor te zorgen dat ze toegang hebben tot hun gegevens.
    • Opmerking: Windows biedt bestandsvirtualisatie om de compatibiliteit van apps te verbeteren en problemen te elimineren wanneer apps worden uitgevoerd als een standaardgebruiker in Windows. Uw app mag niet vertrouwen op virtualisatie die aanwezig is in toekomstige versies van Windows.
  • Gebruikersspecifieke app-gegevensmappen
    • Bij installaties per machine mag de app geen gebruikersspecifieke gegevens schrijven tijdens de installatie. Gebruikersspecifieke installatiegegevens mogen alleen worden geschreven wanneer een gebruiker de app voor het eerst start. Dit komt doordat er geen juiste gebruikerslocatie is waar gegevens moeten worden opgeslagen op het moment van de installatie. Pogingen van een app om standaardkoppelingsgedrag op machineniveau te wijzigen nadat de installatie is mislukt. In plaats daarvan moeten standaardwaarden worden geclaimd op gebruikersniveau, waardoor meerdere gebruikers elkaars standaardinstellingen niet kunnen overschrijven.
    • Alle app-gegevens die exclusief zijn voor een specifieke gebruiker en niet mogen worden gedeeld met andere gebruikers van de computer, moeten worden opgeslagen in Gebruikers\<gebruikersnaam>\AppData.
    • Alle app-gegevens die moeten worden gedeeld tussen gebruikers op de computer, moeten worden opgeslagen in ProgramData.
  • Andere systeemmappen en registersleutels
    • De app mag nooit rechtstreeks naar de Windows-map en of submappen schrijven. Gebruik de juiste methoden voor het installeren van bestanden, zoals lettertypen of stuurprogramma's, voor deze mappen.
    • Apps mogen niet automatisch worden gestart bij het opstarten, bijvoorbeeld door een vermelding toe te voegen aan een of meer van deze locaties:
      • Registeruitvoeringssleutels HKLM en, of HKCU onder Software\Microsoft\Windows\CurrentVersion
      • Registeruitvoeringssleutels HKLM en of HKCU onder Software\Wow6432Node\Microsoft\windows\CurrentVersion
      • Startmenu AllPrograms > STARTUP
  • Testdetails
    • Met deze test wordt gecontroleerd of de app gebruikmaakt van de specifieke locaties in het bestandssysteem die Windows biedt voor het opslaan van programma's en softwareonderdelen, gedeelde app-gegevens en app-gegevens die specifiek zijn voor een gebruiker.
  • Corrigerende acties
    • Controleer hoe de app gebruikmaakt van de mappen van het systeem en controleer of deze correct worden gebruikt.
  • Uitzonderingen en afstandsverklaringen
    • Er is een afstandsverklaring vereist voor desktop-apps die naar de ALGEMENE ASSEMBLY-cache (GAC) (GAC) schrijven (.NET-apps moeten assembly-afhankelijkheden privé houden en opslaan in de map van de app, tenzij het delen van een assembly expliciet vereist is).
    • Installatie in de map Programmabestanden is geen vereiste voor Desktop SW-pakketten om SW-logo te bereiken, alleen onder de categorie SW Fundamentals.

Digitaal ondertekende bestandstest

Test uitvoerbare bestanden en apparaatstuurprogramma's om te controleren of ze een geldige digitale handtekening hebben.

  • Achtergrond
    • Digitaal ondertekende bestanden maken het mogelijk om te controleren of het bestand legitiem is en om te detecteren of er met het bestand is geknoeid.
    • Het afdwingen van codeondertekening in de kernelmodus is een Windows-functie die ook wel code-integriteit (CI) wordt genoemd. CI verbetert de beveiliging van Windows door de integriteit van een bestand te controleren telkens wanneer het in het geheugen wordt geladen. CI detecteert of schadelijke code een binair systeembestand heeft gewijzigd en genereert een diagnostische en systeemcontrolelogboekgebeurtenis wanneer de handtekening van een kernelmodule niet correct kan worden geverifieerd.
    • Als voor de app verhoogde machtigingen zijn vereist, geeft de vragen om benodigde bevoegdheden contextuele informatie weer over het uitvoerbare bestand dat verhoogde toegang aanvraagt. Afhankelijk van of de app Authenticode is ondertekend, kan de gebruiker de toestemmingsprompt of de referentieprompt zien.
    • Sterke namen voorkomen dat derden uw code spoofen, zolang u de persoonlijke sleutel veilig houdt. In .NET Framework wordt de digitale handtekening gecontroleerd wanneer de assembly wordt geladen of geïnstalleerd in de GAC. Zonder toegang tot de persoonlijke sleutel kan een kwaadwillende gebruiker uw code niet wijzigen en opnieuw ondertekenen.
  • Testdetails
    • Alle uitvoerbare bestanden, zoals bestanden met bestandsextensies van .exe, .dll, .ocx, .sys, .cpl, .drv en .scr, moeten zijn ondertekend met een Authenticode-certificaat.
    • Alle kernelmodusstuurprogramma's die door de app zijn geïnstalleerd, moeten beschikken over een Microsoft-handtekening die is verkregen via het WHQL- of DRS-programma. Alle stuurprogramma's voor bestandssysteemfilters moeten WHQL zijn ondertekend.
  • Corrigerende actie
    • Onderteken de uitvoerbare bestanden van de app.
    • Gebruik makecert.exe om een certificaat te genereren of een code-ondertekeningssleutel te verkrijgen van een van de commerciële certificeringsinstanties (CA's), zoals VeriSign, Thawte of een Microsoft-CA.
  • Uitzonderingen en afstandsverklaringen
    • Afstandsverklaringen worden alleen beschouwd voor niet-ondertekende herdistribueerbare derden. Een bewijs van communicatie dat een ondertekende versie van de herdistribueerbare(n) aanvraagt, is vereist om deze verklaring van afstand te verlenen.
    • Softwarepakketten met toegevoegde apparaatwaarde zijn vrijgesteld van de kernelmodusstuurprogrammacertificering, omdat stuurprogramma's moeten worden gecertificeerd door Windows-hardwarecertificering.

Ondersteuning voor x64 Windows-test

Test de app om ervoor te zorgen dat de .exe is gebouwd voor de platformarchitectuur waarop deze wordt geïnstalleerd.

  • Achtergrond
    • Het uitvoerbare bestand moet worden gebouwd voor de processorarchitectuur waarop het is geïnstalleerd. Sommige uitvoerbare bestanden kunnen worden uitgevoerd op een andere processorarchitectuur, maar dit is niet betrouwbaar.
    • Architectuurcompatibiliteit is belangrijk omdat 32-bits processen geen 64-bits DLL's kunnen laden en 64-bits processen geen 32-bits DLL's kunnen laden. Op dezelfde manier biedt 64 bitsversies van Windows geen ondersteuning voor het uitvoeren van 16-bits Windows-toepassingen, omdat handles 32 significante bits hebben op 64-bits Windows, zodat ze niet kunnen worden doorgegeven aan 16-bits toepassingen. Daarom mislukt het starten van een 16-bits toepassing op 64-bits versies van Windows.
    • 32-bits apparaatstuurprogramma's kunnen niet worden uitgevoerd op 64-bits versies van Windows en daarom moeten ze worden overgezet naar de 64-bits architectuur.
    • Voor toepassingen in de gebruikersmodus bevat 64-bits Windows WOW64, waarmee 32-bits Windows-toepassingen kunnen worden uitgevoerd op systemen met 64-bits Windows, zij het met enige verlies van prestaties. Er bestaat geen equivalente vertaallaag voor apparaatstuurprogramma's.
    • Om compatibiliteit met 64-bits versies van Windows te behouden, moeten apps systeemeigen ondersteuning bieden voor 64-bits of, minimaal, 32-bits Windows-apps naadloos worden uitgevoerd op 64-bits systemen:
      • Apps en hun installatieprogramma's mogen geen 16-bits code bevatten of afhankelijk zijn van een 16-bits onderdeel.
      • App-installatie moet de juiste stuurprogramma's en onderdelen detecteren en installeren op 64-bits versies van Windows.
      • Shell-invoegtoepassingen moeten worden uitgevoerd op 64-bits versies van Windows.
      • Apps die worden uitgevoerd onder de WoW64-emulator, mogen niet proberen wow64-virtualisatiemechanismen te omzeilen. Als er specifieke scenario's zijn waarin apps moeten detecteren of ze worden uitgevoerd in een WoW64-emulator, moeten ze dit doen door IsWow64Process-aan te roepen.
  • Testdetails
    • De app mag geen binaire bestanden van 16 bits installeren. De app mag geen 32-bits stuurprogramma voor de kernelmodus installeren als het moet worden uitgevoerd op een 64-bits computer.
  • Corrigerende acties
    • Bouw de uitvoerbare bestanden en stuurprogramma's voor de processorarchitectuur waarvoor u ze wilt installeren.

Test van versiecontrole van besturingssysteem

Hiermee wordt getest hoe de app controleert op de versie van Windows waarop deze wordt uitgevoerd.

  • Achtergrond
    • Apps controleren de versie van het besturingssysteem door te testen op een versie die groter is dan of gelijk is aan de vereiste versie om compatibiliteit met toekomstige versies van Windows te garanderen.
  • Testdetails
    • Simuleert het uitvoeren van de app in verschillende versies van Windows om te zien hoe deze reageert.
  • Corrigerende acties
    • Test op de juiste versie van Windows door te testen of de huidige versie groter is dan of gelijk is aan de versie die uw app, service of stuurprogramma nodig heeft.
    • Stuurprogramma-installatieprogramma's en installatiemodules moeten nooit de versie van het besturingssysteem controleren.
  • Uitzonderingen en afstandsverklaringen
    • Afstandsverklaringen worden overwogen voor apps die voldoen aan de volgende criteria: (alleen van toepassing op certificering van desktop-apps)
      • Apps die worden geleverd als één pakket dat wordt uitgevoerd op Windows XP, Windows Vista en Windows 7 en moeten de versie van het besturingssysteem controleren om te bepalen welke onderdelen moeten worden geïnstalleerd op een bepaald besturingssysteem.
      • Apps die alleen de minimale versie van het besturingssysteem controleren (alleen tijdens de installatie, niet tijdens runtime) door alleen de goedgekeurde API-aanroepen te gebruiken en de minimale versievereiste in het app-manifest op te nemen zoals vereist.
      • Beveiligings-apps zoals antivirus- en firewall-apps, systeemhulpprogramma's zoals defragmentatieprogramma's en back-up-apps, en diagnostische hulpprogramma's die de versie van het besturingssysteem controleren met behulp van alleen de goedgekeurde API-aanroepen.

UAC-test (Gebruikersaccountbeheer)

Test de app om te controleren of deze niet onnodig verhoogde machtigingen nodig heeft om uit te voeren.

  • Achtergrond
    • Een app die alleen werkt of installeert wanneer de gebruiker een beheerder is, dwingt gebruikers de app uit te voeren met onnodige verhoogde machtigingen, waardoor malware de computer van de gebruiker kan invoeren.
    • Wanneer gebruikers altijd gedwongen worden om apps met verhoogde toegangstokens uit te voeren, kan de app serveren als toegangspunt voor misleidende of schadelijke code. Deze malware kan eenvoudig het besturingssysteem wijzigen, of erger, andere gebruikers beïnvloeden. Het is bijna onmogelijk om een gebruiker met volledige beheerderstoegang te beheren, omdat beheerders apps of scripts op de computer kunnen installeren en uitvoeren. IT-managers zijn altijd op zoek naar manieren om 'standaard desktops' te maken waarbij gebruikers zich aanmelden als standaardgebruikers. Standaard desktops verlagen de helpdeskkosten aanzienlijk en verlagen DE IT-overhead.
    • De meeste toepassingen hebben geen beheerdersbevoegdheden nodig tijdens runtime. Een standaardgebruikersaccount moet deze kunnen uitvoeren. Windows-apps moeten een manifest (ingesloten of extern) hebben om het uitvoeringsniveau te definiëren dat het besturingssysteem de bevoegdheden vertelt die nodig zijn om de app uit te voeren. Het app-manifest is alleen van toepassing op .exe bestanden, niet op .dll bestanden. Gebruikersaccountbeheer (UAC) inspecteert geen DLL's tijdens het maken van het proces. UAC-regels zijn niet van toepassing op Microsoft-services. Het app-manifest kan worden ingesloten of extern.
    • Als u een manifest wilt maken, maakt u een bestand met de naam <app_name>.exe.manifest en slaat u het op in dezelfde map als de EXE. Houd er rekening mee dat een extern manifest wordt genegeerd als de app een intern manifest heeft.
      • Bijvoorbeeld <requestedExecutionLevel level="asInvoker | highestAvailable | requireAdministrator"" uiAccess="true|false"/>
      • Het belangrijkste proces van de app moet worden uitgevoerd als een standaardgebruiker (asInvoker). Alle beheerfuncties moeten worden verplaatst naar een afzonderlijk proces dat wordt uitgevoerd met beheerdersbevoegdheden.
      • Gebruikersgerichte apps waarvoor verhoogde bevoegdheden zijn vereist, moeten Authenticode zijn ondertekend.
  • Testdetails
    • Alle gebruikersgerichte exe's moeten worden gemarkeerd met het kenmerk asInvoker. Als ze zijn gemarkeerd als highestAvailable of requireAdministrator, moeten ze correct zijn ondertekend. Elke app-exe mag het uiAccess-kenmerk niet hebben ingesteld op waar. Alle exe's die als een service worden uitgevoerd, worden uitgesloten van deze specifieke controle.
  • Corrigerende acties
    • Controleer het manifestbestand van de app op de juiste vermeldingen en machtigingsniveaus.
  • Uitzonderingen en afstandsverklaringen
    • Er is een afstandsverklaring vereist voor apps die hun hoofdproces uitvoeren met verhoogde bevoegdheden (vereisen datAdministrator of hoogste beschikbaarheidsrechten). Het belangrijkste proces is het proces dat het invoerpunt van de gebruiker aan de app biedt.
    • Afstandsverklaringen worden overwogen voor de volgende scenario's:
      • Systeemhulpprogramma's met uitvoeringsniveau ingesteld op highestAvailable, requireAdministratorof beide.
      • Alleen de toegankelijkheids- of UI Automation Framework-app stelt de vlag uiAccess in op TRUE om de isolatie van gebruikersinterfacemachtiging (UIPI) te omzeilen. Als u het app-gebruik correct wilt starten, moet deze vlag Authenticode zijn ondertekend en zich op een beveiligde locatie in het bestandssysteem bevinden, zoals Program Files.

Beheerberichten voor opnieuw opstarten van het systeem naleven

Test hoe de app reageert op het afsluiten van het systeem en het opnieuw opstarten van berichten.

  • Achtergrond
    • Apps moeten zo snel mogelijk worden afgesloten wanneer ze worden gewaarschuwd dat het systeem wordt afgesloten om een responsieve afsluit- of uitschakelingservaring voor de gebruiker te bieden.
    • Bij een kritieke afsluiting worden apps die ONWAAR retourneren naar WM_QUERYENDSESSION verzonden WM_ENDSESSION en gesloten, terwijl de apps die reageren op WM_QUERYENDSESSION geforceerd worden beëindigd.
  • Testdetails
    • Onderzoekt hoe de app reageert op het afsluiten en afsluiten van berichten.
  • Corrigerende acties
    • Als deze test mislukt voor uw app, controleert u hoe deze Windows-berichten worden verwerkt:
      • WM_QUERYENDSESSION met LPARAM- = ENDSESSION_CLOSEAPP(0x1): Desktop-apps moeten onmiddellijk reageren (WAAR) ter voorbereiding op een herstart. Console-apps kunnen SetConsoleCtrlHandler- aanroepen om een afsluitmelding te ontvangen. Services kunnen RegisterServiceCtrlHandlerEx- aanroepen om afsluitmeldingen te ontvangen in een handlerroutine.
      • WM_ENDSESSION met LPARAM- = ENDSESSION_CLOSEAPP(0x1): Apps moeten binnen 30 seconden een waarde van 0 retourneren en afsluiten. Apps moeten zich ten minste voorbereiden door gebruikersgegevens op te slaan en de benodigde gegevens te vermelden na het opnieuw opstarten.
    • Console-apps die de melding CTRL_C_EVENT ontvangen, moeten onmiddellijk worden afgesloten. Stuurprogramma's mogen geen veto op een gebeurtenis voor het afsluiten van het systeem uitvoeren.
    • Opmerking: Apps die afsluiten moeten blokkeren vanwege een bewerking die niet kan worden onderbroken, moeten ShutdownBlockReasonCreate- gebruiken om een tekenreeks te registreren die de reden voor de gebruiker verklaart. Wanneer de bewerking is voltooid, moet de app ShutdownBlockReasonDestroy aanroepen om aan te geven dat het systeem kan worden afgesloten.

Test in veilige modus

Test of het stuurprogramma of de service is geconfigureerd om te starten in de veilige modus.

  • Achtergrond
    • Met de veilige modus kunnen gebruikers problemen met Windows vaststellen en oplossen. Alleen stuurprogramma's en services die nodig zijn voor de basisbewerking van het besturingssysteem of die diagnostische en herstelservices bieden, moeten in de veilige modus worden geladen. Het laden van andere bestanden in de veilige modus maakt het moeilijker om problemen met het besturingssysteem op te lossen.
    • Standaard starten alleen de stuurprogramma's en services die vooraf zijn geïnstalleerd met Windows, in de veilige modus. Alle andere stuurprogramma's en services moeten worden uitgeschakeld, tenzij het systeem ze vereist voor basisbewerkingen of voor diagnostische en hersteldoeleinden.
  • Testdetails
    • Stuurprogramma's die door de app zijn geïnstalleerd, mogen niet worden gemarkeerd voor het laden in de veilige modus.
  • Corrigerende acties
    • Als het stuurprogramma of de service niet in de veilige modus moet worden gestart, verwijdert u de vermeldingen van de app uit de registersleutels.
  • Uitzonderingen en afstandsverklaringen
    • Voor stuurprogramma's en services die in de veilige modus moeten worden gestart, moet een verklaring van afstand worden verleend. De afstandsaanvraag moet elk stuurprogramma en elke service bevatten die moet worden toegevoegd aan de SafeBoot-registersleutels en de technische redenen beschrijven waarom het stuurprogramma of de service in de veilige modus moet worden uitgevoerd. Het app-installatieprogramma moet al deze stuurprogramma's en services registreren in deze registersleutels:
      • HKLM/System/CurrentControlSet/Control/SafeBoot/Minimal
      • HKLM/System/CurrentControlSet/Control/SafeBoot/Network
  • Opmerking: U moet de stuurprogramma's en services testen die u in de veilige modus wilt starten om ervoor te zorgen dat ze werken in de veilige modus zonder fouten.

Sessietest voor meerdere gebruikers

Test hoe de app zich gedraagt wanneer deze in meerdere sessies tegelijk wordt uitgevoerd.

  • Achtergrond
    • Windows-gebruikers moeten gelijktijdige sessies kunnen uitvoeren. Apps moeten ervoor zorgen dat wanneer ze in meerdere sessies worden uitgevoerd, lokaal of extern, de normale functionaliteit van de app niet nadelig wordt beïnvloed. App-instellingen en gegevensbestanden moeten gebruikersspecifiek zijn en de privacy en voorkeuren van de gebruiker moeten worden beperkt tot de sessie van de gebruiker.
  • Testdetails
    • Voert meerdere gelijktijdige exemplaren van de app uit om het volgende te testen:
      • Meerdere exemplaren van een app die tegelijkertijd worden uitgevoerd, worden geïsoleerd van elkaar.
    • Dit betekent dat gebruikersgegevens van het ene exemplaar niet zichtbaar zijn voor een ander exemplaar. Geluid in een inactieve gebruikerssessie mag niet worden gehoord in een actieve gebruikerssessie. In gevallen waarin meerdere app-exemplaren gebruikmaken van gedeelde resources, moet de app ervoor zorgen dat er geen conflict is.
      • Als de app is geïnstalleerd voor meerdere gebruikers, worden er gegevens opgeslagen in de juiste map(en) en registerlocaties.
      • De app kan worden uitgevoerd in meerdere gebruikerssessies (Fast User Switching) voor zowel lokale als externe toegang.
    • Om dit te garanderen, moet de app andere TS-sessies (Terminal Service) controleren op bestaande exemplaren van de app. Als de app geen ondersteuning biedt voor meerdere gebruikerssessies of externe toegang, moet deze duidelijk aan de gebruiker worden gezegd wanneer deze wordt gestart vanuit een dergelijke sessie.
  • Corrigerende actie
    • Zorg ervoor dat de app geen systeembrede gegevensbestanden of -instellingen opslaat in gebruikersspecifieke gegevensarchieven, zoals gebruikersprofiel of HKCU. Als dit het geval is, is die informatie niet beschikbaar voor andere gebruikers.
    • Uw app moet configuratie- en gegevensbestanden voor het hele systeem installeren tijdens de installatie en de gebruikersspecifieke bestanden en instellingen maken na de installatie wanneer een gebruiker deze uitvoert.
    • Zorg ervoor dat de app niet meerdere gelijktijdige sessies blokkeert, lokaal of extern. De app mag niet afhankelijk zijn van globale mutexes of andere benoemde objecten om meerdere gelijktijdige sessies te controleren of te blokkeren.
    • Als de app meerdere gelijktijdige sessies per gebruiker niet kan toestaan, gebruikt u naamruimten per gebruiker of per sessie voor mutexes en andere benoemde objecten.

Crashes en vastlopen test

Controleert de app tijdens het testen van de certificering om vast te leggen wanneer deze vastloopt of vastloopt.

  • Achtergrond
    • App-fouten, zoals crashes en vastlopen, zijn een grote onderbreking voor gebruikers en veroorzaken frustraties. Het elimineren van dergelijke fouten verbetert de stabiliteit en betrouwbaarheid van apps en biedt gebruikers over het algemeen een betere app-ervaring. Apps die niet meer reageren of vastlopen, kunnen ertoe leiden dat de gebruiker gegevens kwijtraakt en een slechte ervaring heeft.
  • Testdetails
    • We testen de app-tolerantie en -stabiliteit tijdens de certificeringstests.
    • De Windows App Certification Kit roept IApplicationActivationManager::ActivateApplication aan om Windows Store-apps te starten. Voor ActivateApplication- om een app te starten, moet UAC (User Account Control) zijn ingeschakeld en moet de schermresolutie ten minste 1024 x 768 of 768 x 1024 zijn. Als aan een van beide voorwaarden niet wordt voldaan, mislukt deze test door uw app.
  • Corrigerende acties
    • Zorg ervoor dat UAC is ingeschakeld op de testcomputer.
    • Zorg ervoor dat u de test uitvoert op een computer met groot genoeg scherm.
    • Als uw app niet kan worden gestart en uw testplatform voldoet aan de vereisten van ActivateApplication-, kunt u het probleem oplossen door het activeringsgebeurtenislogboek te bekijken. Ga als volgt te werk om deze vermeldingen te vinden in het gebeurtenislogboek:
      1. Open eventvwr.exe en navigeer naar het knooppunt \Windows Logs\Application.
      2. Filter de weergave om gebeurtenis-id's weer te geven: 5900-6000.
      3. Bekijk de logboekvermeldingen voor informatie die mogelijk verklaren waarom de app niet is gestart.
    • Los het bestand op met het probleem, identificeer en los het probleem op. Bouw de app opnieuw en test deze opnieuw.
  • Aanvullende informatiebronnen

Compatibiliteits- en tolerantietest

  • Achtergrond
    • Met deze controle worden twee aspecten van een app gevalideerd. De belangrijkste uitvoerbare bestanden van de app, zoals het invoerpunt van de gebruiker, moeten worden gemanifesteerd voor compatibiliteit en de juiste GUID declareren. Ter ondersteuning van deze nieuwe test heeft het rapport een subknooppunt onder Compatibiliteit & tolerantie. De app mislukt als een of beide van deze voorwaarden ontbreken.
  • Testdetails
    • compatibiliteit:-apps moeten volledig functioneel zijn zonder windows-compatibiliteitsmodi, AppHelp-berichten of andere compatibiliteitsoplossingen te gebruiken. Met een compatibiliteitsmanifest kan Windows uw app het juiste compatibiliteitsgedrag bieden onder de verschillende versies van het besturingssysteem
    • AppInit:-apps mogen geen DLL's vermelden die moeten worden geladen in de registersleutel van HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs.
    • Switchback: De toepassing moet het switchback-manifest opgeven. Als het manifest ontbreekt, geeft Windows App Certification Kit een waarschuwingsbericht. Windows App Certification Kit controleert ook of het manifest geldige GUID van het besturingssysteem bevat.
  • Corrigerende acties
    • Los het onderdeel van de app op dat gebruikmaakt van de compatibiliteitsoplossing.
    • Zorg ervoor dat de app niet afhankelijk is van compatibiliteitsoplossingen voor de functionaliteit ervan.
    • Zorg ervoor dat uw app is gemanifesteerd en dat de compatibiliteitssectie de juiste waarden bevat
  • Aanvullende informatie

Best practices voor Windows-beveiliging testen

  • Achtergrond
    • Een app mag de standaardbeveiligingsinstellingen voor Windows niet wijzigen
  • Testdetails
    • Test de beveiliging van de app door De Surface Analyzer voor aanvallen uit te voeren. De aanpak is om per test categorieën van fouten toe te voegen. Enkele categorieën voor beveiligingstests kunnen bijvoorbeeld het volgende omvatten:
      • Initialisatiefout
      • Beveiligingsarchitectuurfout
      • Mogelijke bufferoverloopfout
      • Crashfout
    • Raadpleeg hiervoor meer informatie.
  • Corrigerende acties
    • Los het probleem op dat is geïdentificeerd door de tests. Bouw de app opnieuw en test deze opnieuw.

Windows-beveiligingsfuncties testen

  • Achtergrond
    • Toepassingen moeten zich aanmelden voor Windows-beveiligingsfuncties. Als u de standaardbeveiliging van Windows wijzigt, kunnen klanten risico lopen.
  • Testdetails
    • Test de beveiliging van de app door BinScope Binary Analyzer uit te voeren. Raadpleeg hiervoor meer informatie.
  • Corrigerende acties
    • Los het probleem op dat is geïdentificeerd door de tests. Bouw de app opnieuw en test deze opnieuw.

Hoge DPI-test

Het wordt ten zeerste aanbevolen voor de Win32-apps om DPI-bewust te zijn. Het is de sleutel om de gebruikersinterface van de app consistent goed te laten uitzien in een groot aantal instellingen voor hoge DPI-weergave. Een niet-DPI-compatibele app die wordt uitgevoerd op een hoge DPI-weergave-instelling kan problemen hebben, zoals onjuist schalen van UI-elementen, geknipte tekst en wazige afbeeldingen. Er zijn twee manieren om een app te declareren is DPI-bewust. Eén is om DPI te declareren.

  • Achtergrond
    • Met deze controle worden twee aspecten van een app gevalideerd, de belangrijkste uitvoerbare bestanden, zoals gebruikersgerichte app-toegangspunten, moeten worden gemanifesteerd voor HIGH-DPI bewustzijn en dat de juiste API's worden aangeroepen om HIGH-DPI te ondersteunen. De app mislukt als een of beide van deze voorwaarden ontbreken. Met deze controle wordt een nieuwe sectie in het bureaubladrapport geïntroduceerd. Zie het onderstaande voorbeeld.
  • Testdetails
    • Test genereert een waarschuwing wanneer we een van de volgende detecteren:
      • De belangrijkste EXE declareert dpi-bewustzijn niet in het manifest en roept setProcessDPIAware-API niet aan. (Waarschuw de ontwikkelaar als hij vergeet DPI-bewustzijnsmanifest toe te voegen).
      • De belangrijkste EXE declareert geen DPI-bewustzijn in het manifest, maar roept SetProcessDPIAware-API aan (waarschuw de ontwikkelaar dat hij manifest moet gebruiken om DPI-bewustzijn te declareren in plaats van de API aan te roepen).
      • De mainEXE declareert DPI-bewustzijn in het manifest, maar roept ook SetProcessDPIAware-API aan (waarschuw de ontwikkelaar die die API aanroept, is niet nodig).
      • Geef voor de binaire bestanden die geen primaire EXE's zijn, als ze de API aanroepen, een waarschuwing (het aanroepen van de API wordt niet aanbevolen).
  • Corrigerende acties
    • Het gebruik van de functie SetProcessDPIAware() wordt afgeraden. Als een DLL DPI-instellingen tijdens de initialisatie in de cache opneemt, kan het aanroepen van SetProcessDPIAware() in de app een racevoorwaarde genereren. Het aanroepen van de functie SetProcessDPIAware() in een DLL is ook geen goede gewoonte.
  • Aanvullende informatie