Toegangsschending van BEX of APPCRASH treedt op op Windows Server 2008 R2 met Terminal Service.

Dit artikel helpt u bij het oplossen van toegangsschending van BEX of APPCRASH op Windows Server 2008 R2 met Terminal Service.

Oorspronkelijke productversie: Winsock
Origineel KB-nummer: 2279689

Symptomen

Er kan een toegangsfout optreden wanneer uw toepassing:

  • Maakt gebruik van Winsock-API of crypto-API en kan vaak dynamisch een DLL laden/lossen.
  • Is een toepassing met meerdere threads.

Wanneer de toegangsfout optreedt, wordt het volgende foutbericht gegenereerd. Mogelijk ontvangt u een APPCRASH- of BEX-gebeurtenisfout.

Sample.exe toepassing werkt niet meer.

Probleemhandtekening:
Naam van probleem gebeurtenis: APPCRASH
Toepassingsnaam: Sample.exe
Toepassingsversie: 0.0.0.0
Tijdstempel van toepassing: 4afa1ed3
Naam van foutmodule: MSVCR80.dll
Foutmoduleversie: 8.0.50727.4927
Tijdstempel van foutmodule: 4a2752ff
Uitzonderingscode: 40000015
Uitzonderings offset: 000046b4
Versie van besturingssysteem: 6.1.7600.2.0.0.16.7
Landinstellings-id: 1041

Probleemhandtekening:
Naam van probleemgebeurtenis: BEX
Toepassingsnaam: Sample.exe
Toepassingsversie: 0.0.0.0
Tijdstempel van toepassing: 4afa1ed3
Naam van foutmodule: mswsock.dll
Foutmodule versie: 6.1.7600.16385
Tijdstempel van foutmodule: 4a5bda77
Uitzonderings offset: 000016bf
Uitzonderingscode: c0000005
Uitzonderingsgegevens: 00000008
Versie van besturingssysteem: 6.1.7600.2.0.0.16.7
Landinstellings-id: 1041

Oorzaak

De hoofdoorzaak van dit probleem is een wijziging die in Windows Server 2008 R2 is aangebracht in het tijdstip waarop de tsappcmp.dll-module (DLL voor toepassingscompatibiliteit van extern bureaublad-services) wordt geïnitialiseerd, waardoor uw toepassing DLL-functies aanroept voordat er een koppeling naar functies in het DLL-bestand wordt gemaakt.

Oplossing

Voer een van de volgende vier opties uit om dit probleem op te lossen:

  1. Sluit de toepassing uit waarop de fout is opgetreden bij Preventie van gegevensuitvoering (DEP).

  2. Voeg de linkeroptie /TSAWARE toe om uw toepassing te bouwen.

  3. Voeg de optie /TSAWARE toe met editbin.exe hulpprogramma.

    • Voer de opdrachtprompt van Visual Studio uit.

    • Typ de volgende opdracht.

      editbin.exe /TSAWARE <Program file name>
      
    • U kunt controleren of het programma op de hoogte is van de terminalservice door de opdracht te volgen.

      editbin.exe /headers <Program file name>
       :
       8540 DLL characteristics
       Dynamic base
       NX compatible
       No structured exception handler
       Terminal Server Aware
      

Zie Het gedrag van de TSAware-vlag wijzigen in .NET Framework 3.5 SP1 voor meer informatie over de TSAware-vlag.