Er det mulig å slette feilrapportering? Windows ulåst: Hvordan fungerer feillogging? Deaktivering av feilrapportering i XP

💖 Liker du det? Del lenken med vennene dine
Dette er en artikkel basert på spørsmål på forumene: "Hvordan kan jeg returnere en streng fra en DLL?", "Hvordan sende og returnere en rekke poster?", "Hvordan sende et skjema til en DLL?".

For at du ikke skal bruke halve livet på å finne ut av det, vil jeg i denne artikkelen bringe alt på et fat.

Temaene i denne artikkelen har vært berørt mer enn én gang i denne bloggen i ulik grad, men i denne artikkelen er de samlet og begrunnet. Kort sagt, du kan kaste en lenke til denne artikkelen til de som utvikler DLL-er.

Viktig notat: artikkelen må leses sekvensielt. Kodeeksempler er kun gitt som eksempler, på hvert trinn (punkt) i artikkelen legges eksempelkoden til med nye detaljer. For eksempel, helt i begynnelsen av artikkelen er det ikke angitt noen "klassiske" metoder (som bruk av GetLastError , sdtcall-konvensjonen, etc.), som erstattes med mer passende metoder etter hvert som artikkelen skrider frem. Dette ble gjort for at «nye» («uvanlige») design ikke skulle reise spørsmål. Ellers ville det være nødvendig å sette inn en merknad for hvert eksempel som: "dette er diskutert i det avsnittet nedenfor, men det er diskutert i dette avsnittet." I alle fall, på slutten av artikkelen er det en lenke til ferdig kode, skrevet under hensyntagen til alt som er sagt i artikkelen. Du kan bare ta den og bruke den. Og artikkelen forklarer hvorfor og hvorfor. Hvis du ikke er interessert i "hvorfor og hvorfor", bla til slutten til konklusjonen og lenken for å laste ned eksemplet.

Feilrapportering er aktivert som standard i XP, Vista og Windows 7. Når et program støter på en feil, vises en detaljert beskrivelse av feilen, og du blir bedt om å sende denne informasjonen til Microsoft. Denne informasjonen hentet fra millioner av PC-er rundt om i verden og hjelper til med å lage patcher og oppdateringspakker. I noen tilfeller hjelper uavhengig analyse av feilinformasjon med å løse problemet. I noen tilfeller er imidlertid denne systematferden ikke akseptabel, og du vil gjerne deaktivere denne funksjonaliteten. I denne artikkelen skal vi se på metoder for å deaktivere feilrapportering i alle systemer.

Windows 7

Åpne startmenyen og skriv inn i søkefeltet innstillinger for problemrapportering, eller gå til Handlingssenter -> Endre handlingssenterinnstillinger -> Innstillinger for problemrapportering. Hvis du brukte søkemetoden, velg "Velg hvordan du rapporterer problemer":

Du kan da enkelt velge alternativet du trenger fra listen.

Deaktiver feilrapportering i Windows 7 bruker gruppepolicyer

Merk: Denne metoden er ikke tilgjengelig for hjemmeversjoner av Windows 7.

Klikk Start og skriv inn gpedit.msc i søkefeltet og trykk Enter.

Den lokale gruppepolicyredigereren åpnes. Deretter må du gå til Brukerkonfigurasjon\Administrative maler\Windows-komponenter\Windows-feilrapportering og gå til policyen Deaktiver Windows-feilrapportering.

Endre policystatusen fra Ikke konfigurert til Aktivert, klikk deretter på Bruk og Ok og avslutt gruppepolicyredigering.

Deaktivering av feilrapportering i Vista

For å deaktivere feilrapportering i Vista, klikk på Start og åpne kontrollpanelet.

Bytt kontrollpanelet til klassisk visningsmodus og klikk på Problemrapporter og løsninger.

Som du kan se, tilbys vi to alternativer. Hvis du velger Be meg sjekke om det oppstår et problem, vil feilrapportering bli aktivert, og du vil få valget om å sende informasjonen til Microsoft eller ikke. Hvis du velger Se etter løsninger automatisk (anbefalt) alle data vil bli sendt til Microsoft automatisk. Begge alternativene passer ikke for oss, siden vi vil deaktivere denne funksjonaliteten fullstendig, så vi klikker på lenken Avanserte innstillinger.

I vinduet som vises, i seksjonen For programmene mine er problemrapportering... velg Av og klikk deretter OK.

Som du nå kan se, er de tidligere alternativene ikke redigerbare.

Klikk Lukk på meldingen som forteller oss at feilrapportering er deaktivert.

Deaktivering av feilrapportering i XP

For å deaktivere feilrapportering i XP, høyreklikk på "-ikonet Datamaskinen min" og velg Egenskaper. Gå til fanen i vinduet som åpnes I tillegg og trykk på knappen Feilrapportering.

Velg alternativet i vinduet som åpnes Deaktiver feilrapportering. Fjern merket for alternativet Men gi meg beskjed når det oppstår en kritisk feil.

Vi lurte på hvor vi kan kjøpe gode og rimelige klær til et barn. Jeg anbefaler en barnelagernettbutikk med stort utvalg og lave priser.

Slutter å fungere eller fungerer feil) Windows oppretter en problemrapport som er ment å sendes til Microsoft(for å finne en løsning på problemet).

Begynner med operativsystem , for å erstatte "feil- eller ulykkesanalyseverktøyet" Dr. Watson kom Windows feilrapportering (WER) – Windows feilloggingstjeneste(andre navn - , Problemrapporter og løsninger).

Windows feilloggingstjeneste representert av følgende filer (alle ligger i katalogen \Windows\System32\):

wer.dll (Bibliotek med meldinger om Windows feil );

wercon.exe (Rapporter om problemer og deres løsninger);

wercplsupport.dll ();

werdiagcontroller.dll (WER diagnosekontroller);

WerFault.exe (Windows feilrapport);

WerFaultSecure.exe (Windows feilrapporter);

wermgr.exe (Windows-problemrapportering);

wersvc.dll (Windows feilloggingstjeneste);

www.wertargets.wtl.

Når en prosess (program) mislykkes, vil tjenesten Windows feilrapportering lanserer - i økten av den feilaktige prosessen - sin ( WerFault.exe),

sender id ( PID) behandle i kommandolinje WerFault:

Dette vil vise et vindu Microsoft Windows med en feilmelding - "Arbeidet stoppet<Название_программы>. Neste gang du kobler til Internett Windows kan søke etter en måte å eliminere denne feilen":


Når du trykker på knappen Vis problemdetaljer Du kan se problemsignaturen:


Problemsignaturer lagres i feilrapporter, som lagres i katalogen \Users\Master\AppData\Local\Microsoft\Windows\WER\ReportArchive\, hver rapport er i en egen mappe Rapportere********(For eksempel, Rapport0a003e48), i filen Report.wer.

Omtrentlig filinnhold Report.wer:

Versjon=1

EventType=APPCRASH

EventTime=129234418886148269

ReportType=2

Samtykke=1

Response.type=4

Sig.Name=Programnavn

Sig.Value=iexplore.exe

Sig.Name=Applikasjonsversjon

Sig.Verdi=8.0.6001.18928

Sig.Name=Søknadstidsstempel

Sig.Verdi=4bdfa327

Sig.Name=Feilmodulnavn

Sig.Value=mshtml.dll

Sig.Name=Feilmodulversjon

Sig.Verdi=8.0.6001.18928

Sig.Name=Tidsstempel for modulen med feil

Sig.Verdi=4bdfb76d

Sig.Name=Unntakskode

Sig.verdi=c0000005

Sig.Name=Unntaksforskyvning

Sig.Verdi=000da33f

DynamicSig.Name=OS-versjon

DynamicSig.Value=6.0.6002.2.2.0.768.3

DynamicSig.Name=Språkkode

DynamicSig.Value=1049

DynamicSig.Name=Tilleggsinformasjon 1

DynamicSig.Value=fd00

DynamicSig.Name=Tilleggsinformasjon 2

DynamicSig.Name=Tilleggsinformasjon 3

DynamicSig.Value=fd00

DynamicSig.Name=Tilleggsinformasjon 4

DynamicSig.Value=

UI=C:\Program Files\ Internet Explorer\iexplore.exe

UI=Internet Explorer har sluttet å fungere

UI=Windows kan søke på Internett etter en løsning på denne feilen.

UI=Søk etter en løsning på problemet på Internett og lukk programmet

UI=Se etter en rettelse online senere og lukk programmet

UI=Lukk programmet

FriendlyEventName=Stopp arbeidet

ConsentKey=APPCRASH

AppName=Internet Explorer

AppPath=C:\Program Files\Internet Explorer\iexplore.exe

Hvordan starte tjenesten Rapporter om problemer og deres løsninger

Klikk Start -> Kontrollpanel -> Rapporter om problemer og deres løsninger;


- i vinduet Rapporter om problemer og deres løsninger på menyen Oppgaver Følgende alternativer er tilgjengelige:

· Se etter nye løsninger(en åpen Internett-tilkobling kreves);

I den forrige artikkelen i denne serien, dedikert til mekanismen for omstart og gjenoppretting av applikasjoner, nevnte vi WER-mekanismen (Windows Error Reporting). Dette vil bli diskutert i denne artikkelen i denne serien.

I den forrige artikkelen i denne serien, dedikert til mekanismen for omstart og gjenoppretting av applikasjoner, nevnte vi WER-mekanismen (Windows Error Reporting). Dette vil bli diskutert i denne artikkelen i denne serien.

Windows feilrapporteringsmekanisme

Ved å bruke Windows Error Reporting (WER) kan du samle inn data om feil som oppstår i applikasjoner og enten sende denne informasjonen til en spesiell Microsoft-side (http://winqal.microsoft.com) eller lagre den lokalt. Innsamling av detaljert informasjon om feil og feil hjelper til med å eliminere applikasjonsmangler, feilretting, forenkler utgivelsen av oppdateringspakker og nye versjoner av applikasjoner, og sikrer den generelle stabiliteten og påliteligheten til både applikasjonene selv og operativsystemet.

Merk at Microsoft selv aktivt bruker Windows Error Reporting-mekanismen både under utviklingsprosessen og etter lansering av produkter til markedet. Dermed korrigerte produktgruppen Microsoft Office 50 % av feilene i Office Service Pacl 2, produktgruppen Visual Studio - 74 % av feilene i Beta 1 Visual Studio 2005, 29 % av feilene i Windows XP ble rettet i Windows XP Service pakke 1. For tiden bruker mer enn 2 tusen bedrifter Windows-feilrapporteringstjenester for å forbedre kvaliteten på applikasjonene sine.

Windows Error Reporting dukket først opp i Windows XP, ble betydelig utvidet i Windows Vista, og ble videreutviklet i Windows Server 2008, Vista Service Pack 1 og Windows 7 og Windows Server 2008 R2. På Windows Vista-nivå har utviklere dermed muligheten til ikke bare å motta informasjon om feil som har oppstått i applikasjoner, men også ytelsesdata. Nå kan du opprette, konfigurere og sende problemrapporter mer fleksibelt, online dataanalyseverktøy er forbedret og mekanismen for å kommunisere med brukere er forenklet - gjennom Problemrapporter og løsninger(i Windows Vista - Start -> Kontrollpanel -> System og vedlikehold -> Problemrapporter og løsninger -> Vis problemhistorikk) Og Handlingssenter(på Windows 7). Så, i Windows Server 2008 og Vista Service Pack 1, ble muligheten til å lage lokale dumps tilgjengelig, og i Windows 7 og Windows Server 2008 R2 ble muligheten til å generere unntak lagt til som ikke vil bli håndtert av tradisjonelle behandlere og vil føre til umiddelbar avslutning av applikasjonen og automatisk lansering av Windows-feilrapporteringsmekanismen , samt muligheten til å spesifisere en ekstern prosess - en unntaksbehandler, som vil bli kalt for å få hendelsesnavnet, feilrapporteringsparametere og valgfri lansering av feilsøkeren.

Bruke Windows Feilrapportering

La oss ta en rask titt på hvordan utviklere kan bruke Windows-feilrapportering for å få informasjon om krasj og andre problemer med applikasjonene deres. Starter med Windows Vista Windows gir som standard en rapport over krasj, fryser og kjernefeil for alle applikasjoner - ingen endringer i applikasjonskoden er nødvendig. Rapporten inkluderer en mini-minnedump og en heap-dump av applikasjonen etter behov. applikasjoner krever bruk av APIer i tilfeller der ytterligere applikasjonsspesifikk informasjon må sendes. Fordi Windows-kjernen automatisk rapporterer informasjon om ubehandlede unntak, trenger ikke programmer å håndtere unntak som forårsaker fatale feil.

I tilfelle krasjer, fryser eller feil på kjernenivået til operativsystemet, utfører Windows-feilrapporteringsmekanismen følgende handlingssekvens:

  1. Det oppstår et problem.
  2. Operativsystemkjernen kaller WER.
  3. WER samler inn data, lager en rapport og ber om nødvendig brukeren om bekreftelse på å sende rapporten.
  4. Ved mottak av bekreftelse sender WER en rapport til Microsoft (den såkalte Watson Server).
  5. Hvis serveren krever tilleggsdata, samler WER dem inn og ber om nødvendig bekreftelse fra brukeren for å sende dem.
  6. Hvis applikasjonen er registrert for omstart (et emne vi diskuterte tidligere), utfører WER den aktuelle indirekte kalt applikasjonsfunksjonen.
  7. Hvis det er en løsning på problemet som førte til feilen, blir brukeren varslet via de aktuelle operativsystemverktøyene.

Avhengig av situasjonen kan CAB-filen inneholde Forskjellige typer dumps, som kan skilles fra filtypen (tabell 1).

Applikasjonen kan bruke følgende funksjoner for å tilpasse innholdet i rapporten som sendes til Microsoft - registreringsfunksjonen instruerer nettet til å inkludere de spesifiserte filene og minneblokkene i den genererte rapporten.

For å inkludere en fil i en rapport, brukes WerRegisterFile()-funksjonen, som sendes som parametere: hele navnet på filen, dens type (en av WER_REGISTER_FILE_TYPE-verdiene) og to flagg: WER_DELETE_FILE_WHEN_DONE, som indikerer at filen skal være slettet etter sending av rapporten, og WER_ANONYMOUS_ DATA, som indikerer at filen ikke inneholder private data. Mulige verdier for parameteren WER_REGISTER_FILE_TYPE er gitt i tabellen. 2.

Merk at oppgaven med å generere en minnedump er tildelt applikasjonsutvikleren - for å løse den kan du for eksempel bruke feilsøkingsmekanismer beskrevet i Windows SDK (se MiniDumpWriteDump()-funksjonen).

For å ekskludere en fil fra rapporten, bruk WerUnRegisterFile()-funksjonen, og spesifiser navnet på den ekskluderte filen som en parameter.

I de fleste scenarier referansen tilleggsfiler skjer bare når en tilsvarende forespørsel mottas fra serveren. I tilfelle av å sende flere filer, er det nødvendig å bruke WER_ADD_ REGISTERED_DATA-flagget når du kaller WerReportSubmit()-funksjonen - vi vil snakke om det senere.

For å inkludere en kopi av et minneområde i rapporten, brukes WerRegisterMemoryBlock()-funksjonen, hvis parametere er adressen til begynnelsen av minneblokken som skal inkluderes og størrelsen på denne blokken i byte (maksimal størrelse på en minneblokk er WER_MAX_MEM_BLOCK_SIZE). For å fjerne en kopi av et minneområde i en rapport, bruk WerUnRegisterMemoryBlock()-funksjonen. Hvis du sender data fra minnet, må du bruke WER_ADD_REGISTERED_DATA-flagget når du kaller opp WerReportSubmit()-funksjonen.

Funksjonene WerSetFlags() og WerGetFlags() kan brukes henholdsvis til å kontrollere tilstanden til en prosess når det genereres en feilrapport og innhentes konfigurasjonsinformasjon.

Prosessen med å generere og sende en rapport består av flere trinn. Rapporten initialiseres ved å kalle opp WerReportCreate()-funksjonen, som spesifiserer typen hendelse som rapporten opprettes for, rapporttypen ( WerReportNonCritical- for feil med mulighet for gjenoppretting og WerReportCritical - for feil som førte til at applikasjonen krasjet), en lenke til informasjonen som er inkludert i rapporten (se strukturen WER_REPORT_INFORMATION), og en variabel som vil inneholde en lenke til den genererte rapporten - ReportHandle.

Etter at rapporten har blitt initialisert, må du legge til parametere for den første og andre gruppen til den. Parametrene til den første gruppen settes ved hjelp av funksjonen WerReport-Set-Parameter() som sendes en lenke til den opprettede rapporten (resultatet av vellykket utførelse av WerReportCreate-funksjonen), et sett med flagg, parameternavnet og dets verdi (en 16-bits Unicode-streng som slutter på null).

For å inkludere flere parametere i rapporten, bruk WerReportAddSecondaryParameter()-funksjonen, som sendes en kobling til rapporten, navnet på parameteren og dens verdi.

I tillegg til muligheten for å inkludere filer og øyeblikksbilder av minneområder i rapporter, er det mulig å overføre minnedumper som en del av rapporten - for dette kan du bruke funksjonen WerReportAddDump() hvis parametere inkluderer en lenke til rapporten , lenker til prosessen og tråden som dumpen ble opprettet for , dumptype (en av WER_DUMP_TYPE-verdiene), unntaksinformasjon (peker til en struktur av typen WER_EXCEPTION_INFORMATION), flere alternativer(datatype WER_DUMP_CUSTOM_OPTIONS) og flagg. Merk at prosessen som dumpen opprettes for må ha tilgangsrettigheter STANDARD_RIGHTS_READ og PROCESS_QUERY_INFORMATION.

For å inkludere filer i rapporten bruker vi funksjonen WerReportAddFile() som vi sender en lenke til rapporten, hele filnavnet, filtypen (WER_FILE_TYPE) og tilleggsflagg til.

I tillegg får utviklere muligheten til å tilpasse brukergrensesnitt- velge informasjon som vises i systemdialogpanelet. For disse formålene brukes WerReportSetUI Option()-funksjonen, som sendes en lenke til rapporten, rapportgrensesnitttypen (WER_REPORT_UI) og verdien til den viste strengen. Applikasjonen kan endre alle feltene i grensesnittelementet spesifisert av parameteren WER_REPORT_UI; Hvert funksjonskall lar deg endre bare ett felt. WerReportSetUIOption()-funksjonen kan kalles når som helst under applikasjonsdrift før rapporten sendes direkte.

Når rapporten er generert og konfigurert, bruker vi funksjonen WerReportSubmit() for å sende inn rapporten. Parametrene til denne funksjonen er en lenke til rapporten, typen brukergrensesnitt (administratorrettigheter, bekreftelse på sending osv.) og et sett med flagg. Etter at rapporten er sendt, bør du lukke lenken til den ved å bruke WerReportCloseHandle()-funksjonen.

For å deaktivere et program fra Windows-feilrapporteringsmekanismen, bør du bruke funksjonen WerAddExcludedApplication() og for å gjentilkobling- WerRemoveExcludedApplication() funksjon.

Windows Feilrapporteringsinnstillinger er plassert i to registergrener:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows Feilrapportering;
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Feilrapportering.

De mest nyttige innstillingene er vist i tabellen. 3.

Konklusjon

I denne serien med artikler diskuterte vi ulike spørsmål om forbedring av applikasjonsstabilitet. Vi så på teknikker for å unngå minnelekkasjer og forhindre at applikasjoner fryser, diskuterte bruken av mekanismen Application Restart and Recovery, som lar deg starte applikasjoner på nytt som enten har blokkert enkelte ressurser eller sluttet å svare på systemmeldinger, og Windows Error Reporting-mekanismen. , som gjør det mulig å samle inn data om feil som oppstår i applikasjoner.

I de følgende artiklene dedikert til operasjonssalen Windows-system 7 for utviklere, vil vi se på en rekke endringer på kjernenivå som kan være av interesse for applikasjonsutviklere.

Service WER (Windows feilrapportering) brukes til å samle inn og sende feilsøkingsinformasjon om krasj i system og tredjepartsapplikasjoner i Windows til Microsoft-servere. Ifølge Microsofts idé bør denne informasjonen analyseres, og hvis en løsning er tilgjengelig, bør en løsning for å fikse problemet sendes til brukeren gjennom Windows Error Reporting Response. Men faktisk er det få som bruker denne funksjonaliteten, selv om Microsoft vedvarende lar WER-feilinnsamlingstjenesten være aktivert som standard i alle siste versjoner Windows. I de fleste tilfeller huskes WER-tjenesten når katalogen begynner å ta opp plass. systemdisk ganske mye plass (opptil flere titalls GB), selv om .

Windows feilrapporteringstjeneste

Windows Error Reporting-tjenesten er en egen Windows-tjeneste som enkelt kan deaktiveres med kommandoen:

Inne i WER\ReportQueue\-katalogen er det mange kataloger navngitt i formatet:

  • Critical_6.3.9600.18384_(ID)_00000000_cab_3222bf78
  • Critical_powershell.exe_(ID)_cab_271e13c0
  • Critical_sqlservr.exe__(ID)_cab_b3a19651
  • NonCritical_7.9.9600.18235__(ID)_0bfcb07a
  • AppCrash_cmd.exe_(ID)_bda769bf_37d3b403

Som du kan se, inneholder katalognavnet alvorlighetsgraden av hendelsen og navnet på den spesifikke exe-filen som krasjet. Alle kataloger må ha en fil Report.wer, som inneholder en beskrivelse av feilene og flere filer med tilleggsinformasjon.

Rensing av mappen WER\ReportQueue i Windows

Vanligvis er størrelsen på hver mappe ubetydelig, men i noen tilfeller genereres en minnedump for den problematiske prosessen, som tar opp ganske mye plass. Skjermbildet nedenfor viser at dumpfilstørrelsen er minne.hdmp er ca 610 MB. Et par slike dumper – og flere ledige gigabyte forsvant på disken.

For å fjerne alle disse feilene og loggene vanlige midler, åpne kontrollpanelet og gå til delen Kontrollpanel -> System og sikkerhet -> Handlingssenter -> Vedlikehold -> Se pålitelighetshistorikk -> Se alle problemrapporter og klikk på knappen Fjern alle problemrapporter.

For raskt å frigjøre diskplass fra feilsøkingsfiler generert av WER-tjenesten, kan innholdet i følgende kataloger enkelt slettes manuelt.

  • C:\ProgramData\Microsoft\Windows\WER\ReportArchive\

Deaktiverer Vindufeilrapportering i Windows Server 2012 R2 / 2008 R2

Du kan deaktivere registrering av feilinformasjon om Windows Feilrapportering i serverutgaver av Windows som følger:


Deaktiver rapporteringsfunksjonen i Windows 10

I Windows 10 er det ingen mulighet for å deaktivere feilrapportering via GUI. Du kan sjekke komponentstatus i kontrollpanelet system og sikkerhet ->Sikkerhets- og servicesenter-> seksjon Service. Som du kan se, er alternativet aktivert som standard (Kontrollpanel -> System og sikkerhet -> Sikkerhet og vedlikehold -> Vedlikehold -> Se etter løsninger på problemrapporter).

Du kan deaktivere Windows-feilrapportering i Windows 10 gjennom registeret. For å gjøre dette, i grenen må du opprette en ny parameter av typen DWORD (32 biter) med navnet Funksjonshemmet og mening 1 .

La oss nå sjekke parameterstatusen igjen Finne løsninger på rapporterte problemer i kontrollpanelet. Statusen skal endres til Deaktivert.

Deaktivering av Windows-feilrapportering via gruppepolicy

Hogst Windows-tjeneste Feilrapportering kan også deaktiveres via gruppepolicy. Det er i seksjonen Datamaskinkonfigurasjon/Administrative maler/Windows-komponenter/Windows-feilrapportering (Windows-komponenter-> Windows-feilrapporter). Aktiver policyen for å deaktivere datainnsamling og sending Deaktiver Windows-feilrapportering(Deaktiver Windows-feilrapportering).

Som et resultat vil programfeilmeldinger i Windows ikke lenger genereres og sendes automatisk til Microsoft.

fortelle venner