Diagnosticați pornirea lentă a Windows folosind Process Monitor. Cum să identifici cauzele pornirii lent Windows folosind Process Monitor

Astăzi voi încerca să înțeleg problema funcționării corecte a software-ului cu drepturi de utilizator folosind exemplul de software (Prima Expert Digital Microscope) pentru un microscop digital de la JSC LOMO.


La fel ca multe întreprinderi, avem o politică de securitate strictă prescrisă în STP și angajații obișnuiți nu au drepturi de administrator, așa că din când în când apar probleme cu funcționarea software-ului în contul de utilizator. cont, deoarece Software-ul necesită drepturi avansate.

Deci ce am la început, departamentul de control al calității control tehnic) a solicitat instalarea software-ului însoțitor de microscop „Expert Prima versiunea 1.0” pe o mașină de utilizator obișnuită cu Windows XP.

Instalarea a fost finalizată, dar a fost detectată următoarea problemă. Programul nu vede camera și decupează interfața după lansare ca utilizator, funcționează corect sub administratorul software.

Primul lucru pe care l-am încercat a fost să dau utilizatorului permisiunea de a schimba directorul cu programul LOMO.

Această acțiune nu a dat rezultate pozitive. Înarmat cu utilitarul Process Monitor, am configurat un filtru în el pentru procesul Prima.exe și am lansat software-ul Prima Expert.

Utilitarul afișează toate resursele de sistem afectate pentru ca Prima.exe să fie rulat

Sort după câmpul Detaliu și merg să mă uit la tufele afectate, sunt interesat de valoarea Acces dorit: Citire/Scriere.

Ofer utilizatorului acces deplin la folderele de registry:

HKLM\Software\Microsoft\VfWWDM Mapper
HKLM\System\CurrentControlSet\control\MediaResources\msvideo\MSVideo.VFWWDM

De ce aceste foldere? Deoarece utilizatorul are acces deplin la HKCU - aceasta este filiala lui.

Îl rulez pentru a verifica, programul funcționează conform așteptărilor.

Sper că articolul va fi util administratorilor și enicerilor începători. Folosesc această metodă de foarte mult timp. Este versatil și nu m-a dezamăgit niciodată.

(ProcMon) de către Sysinternals.

I-am spus recent unui tânăr Padawan cum să folosească acest instrument minunat și, în unele cazuri, de neînlocuit. Și în timp ce vorbeam, mi-a venit ideea să scriu o astfel de instrucțiune introductivă pentru cei care abia își încep drumul spinos ca administrator.

În general, în opinia mea, tot ceea ce este legat de ProcMon este cel mai bine descris în cartea dezvoltatorilor, care se numește „ Utilitare Sysinternals. Ghidul Administratorului”.

Nu voi intra în buruieni și voi încerca să o prezint cu un minim de teorie și un maxim de practică folosind un exemplu specific.

Lansarea ProcMon

Înregistrează activitatea sistemului de fișiere, a registrului, a rețelei,procese, fire și încărcare de imagini în timp real.

Așa cum? Este clar? 🙂

Dacă doar rulați ProcMon fereastra de lucru programul este plin instantaneu cu diferite evenimente, chiar dacă nu faci nimic. Este foarte greu chiar și pentru un maestru experimentat să înțeleagă aceste evenimente și să le găsească pe cele de interes. Da, și nu este necesar, dar în primul rând.

Cel mai adesea, ProcMon este lansat cu un scop specific, de exemplu, pentru a determina ce face un anumit program, care proces este scrierea fișierelor într-un anumit director sau ramură de registru, unde se duce spațiul pe disc etc. Prin urmare, dacă tocmai porniți ProcMon, va trebui să opriți colectarea de evenimente ( Ctrl+E), ștergeți evenimentele deja colectate ( Ctrl+X), configurați filtre ( Ctrl+L) și începeți din nou monitorizarea. Pentru a nu face atâtea mișcări inutile, este furnizat un parametru de linie de comandă /noconnect:

procmon /noconnect

Rularea cu această opțiune pornește Procmon, dar nu începe monitorizarea, ci deschizând imediat fereastra filtrelor.

În general, pentru a simplifica lansarea, fac (și sfătuiesc pe toată lumea să facă acest lucru), deoarece totul este descris în aceeași carte:

Coautorul meu Aaron creează de obicei un folder C:\Program Files\Sysinternals și extrage conținutul pachetului în el Suita Sysinternals. Acolo utilitățile nu pot fi modificate fără drepturi de administrator. Apoi adaugă acest director la variabila de mediu Calea sistemului, facilitând lansarea utilităților de oriunde, inclusiv prin meniu Start | Alerga (Start | A executa).

Filtre în ProcMon

După cum am menționat mai sus, fereastra de filtru se deschide când este lansată cu parametrul /noconnect. Dacă l-ați închis din greșeală sau trebuie să corectați filtrele deja configurate, puteți deschide fereastra cu filtre folosind o comandă rapidă de la tastatură Ctrl+L, sau prin meniu Filtru | Filtru….

Așa că trebuie să exersăm :)

Știu deja cum să monitorizez registrul, așa că astăzi vom învăța cum să monitorizăm sistemul de fișiere. De exemplu, vom urmări modificările pe care le face un blocnotes standard.

Deci, avem fereastra de filtre deschisă.

Filtre în ProcMon

Pentru orice eventualitate, faceți clic pe butonul pentru a reseta filtrele la starea implicită - Resetați(implicit, ProcMon are o mulțime de filtre configurate, nu este recomandat să le ștergeți) și adăugați un filtru

Numele procesului este notepad.exe include.

apasa butonul Adăuga. După cum sugerează și numele, vor fi capturate numai evenimentele asociate cu procesul notepad.exe, de exemplu. acele evenimente pe care notepad-ul le generează.

Punct important: Numele procesului trebuie specificat în întregime - cu o extensie, altfel ProcMon nu va captura nimic. Alternativ, puteți folosi un filtru

Numele procesului începe cu notepad include

În acest caz, evenimentele asociate cu procesele care încep pe blocnotes vor fi capturate, acesta poate fi fie un blocnotes standard, fieNotepad++, sau un alt bloc de note. În același mod, adăugați un filtru pentru scrierea fișierelor:

Operația este WriteFile include

Clic AdăugaȘi Bine(în general, puteți apăsa doar Bine, în acest caz, ProcMon va spune că nu există încă un astfel de filtru și va întreba dacă vrem să-l adăugăm. Chestia este că apăsând butonul se închide Bine fereastră de filtru, dacă acesta nu este singurul filtru, atunci este mai bine să faceți clic pe butonul Adăuga, acest lucru vă va permite să adăugați un filtru și să lăsați fereastra de filtru deschisă pentru filtrele ulterioare).

Deoarece ne interesează doar activitatea fișierelor, în fereastra principală ProcMon dezactivăm pictogramele pentru monitorizarea registrului, rețelei și proceselor - lăsând doar monitorizarea sistemului de fișiere (evidențiate în captura de ecran de mai jos).

Un alt punct important.

În mod implicit, ProcMon înregistrează toată activitatea sistemului, chiar și acele evenimente care nu intră sub filtre, ceea ce în unele cazuri poate duce la încetiniri. Dacă sunteți sigur că filtrele sunt configurate corect (în în acest exemplu suntem siguri), și nu aveți nevoie de evenimentele ascunse de ele - acestea pot fi eliminate folosind opțiunea Filtru | Eliminați evenimentele filtrate(Ștergeți evenimentele filtrate) din meniu Filtru. Acest parametru afectează numai înregistrarea evenimentelor curente; evenimentele înregistrate anterior nu sunt șterse din jurnal.

După ce filtrele sunt configurate, începem să colectăm evenimente (un buton cu lupă sau Ctrl+E). Lansați Notepad, scrieți ceva text și salvați fișierul. Să vedem ce s-a întâmplat:

Activitatea fișierului în ProcMon

După cum puteți vedea din captură de ecran, ProcMon a înregistrat evenimentul în care fișierul a fost scris de procesul notepad.exe de-a lungul căii C:\temp\test.txt.

Hai să facem un alt experiment.

Opriți captarea evenimentului ( Ctrl+E), închideți notepad și ștergeți evenimentele colectate ( Ctrl+X). Apelați fereastra de filtrare ( Ctrl+L), resetați filtrele (folosind butonul Resetați) și adăugați următorul filtru:

Calea începe cu c:\temp\

Prin aceasta indicăm că suntem interesați de orice activitate pe parcurs C:\temp. Și din moment ce valoarea nu este specificată exact (nu este, A începe cu), atunci evenimentele vor fi capturate nu numai din acest director, ci și din toate subdirectoarele sale.

Asigurați-vă că numai monitorizarea sistemului de fișiere este activată (resetarea filtrelor resetează totul la starea implicită)

Filtre în ProcMon

Să începem observația. Să deschidem Explorer și să ne urmăm calea. Să aruncăm o privire la ProcMon.

Așa arată deschiderea unui director în ProcMon

Vor fi o grămadă de evenimente pe care nu le înțelegem, dar nu avem nevoie de ele, doar uită-te la câte evenimente se întâmplă atunci când intri în director.

Puteți deschide fișierul și puteți vedea ce mizerie va fi ProcMon. Acesta este motivul pentru care nu recomand niciodată să rulați ProcMon doar pentru a vedea ce se întâmplă în sistem.

Pentru a vedea evenimentele de citire a fișierelor în sine, opriți colectarea evenimentelor, ștergeți fereastra cu rezultate, adăugați un filtru

Operația este ReadFile

și deschideți din nou fișierul.

Ar trebui să arate cam așa (după cum puteți vedea din captura de ecran, am deschis fișierul în două procese diferite):

S-a oferit deja destul de mult material în programul Process Monitor, iar învățarea elementelor de bază ale funcționării utilitarului a fost întotdeauna accesibilă chiar și unui utilizator neinstruit. Dar totuși, personal nu prea am înțeles multe aspecte ale lucrării (și încă nu înțeleg unele :), așa că m-am hotărât să mai scriu o notă despre această utilitate foarte utilă, pentru ca ulterior să pot folosi articolul ca un fel de indiciu. Dacă luăm în considerare orice sistem de operare din punct de vedere al generalizării, atunci îl putem diferenția condiționat în blocuri de cod/date care interacționează între ele pe baza anumitor tipare. Pentru a ne apropia de termenii cu care suntem familiarizați, vom considera blocul menționat un proces care combină atât cod, cât și date, menite să rezolve o problemă anume. Astfel, interacțiunea dintre procese similare constituie (cu unele excepții) conceptul de funcționare sistem de operare. În timp ce sistemul de operare rulează, acesta rulează un numar mare de procesele și scopul oricăruia dintre aceste procese pot varia într-o gamă destul de largă.

Fiecare proces din sistemul de operare, prin totalitatea operațiunilor proprii și a rezultatelor executării acestora, determină de fapt amprenta activității sistemului la un moment sau altul. Dar, după cum știm din teorie, procesele în sine sunt doar containere pentru fire (threads), care realizează în mod direct toată munca de calcul. Este clar că firele sunt cod, un set de instrucțiuni ale mașinii executate de procesor, dar acesta este la un nivel de percepție destul de scăzut. Dacă operăm cu structuri Windows, atunci thread-urile mai conțin Codul mașinii, totuși, toată funcționalitatea sistemului de operare este disponibilă prin accesul la funcții ale diferitelor biblioteci de sistem și apeluri la drivere, astfel încât firele, pe lângă operațiunile aritmetice și logice simple, interacționează cu diverse subsisteme Windows: memorie virtuală, sistem de fișiere, registry , componente hardware și multe altele. Comunicarea între procese este atât de intensă încât în ​​orice moment sunt efectuate mii de astfel de operațiuni în sistem. În consecință, în realitățile Windows, ar fi interesant să observăm interacțiunea proceselor cu anumite componente ale sistemului de operare la nivelul funcțiilor și rezultatele execuției acestora, deoarece acest nivel de activitate este destul de suficient pentru a rezolva majoritatea Probleme. Astfel de informații ne-ar fi extrem de utile atât din punctul de vedere al interesului pur de cercetare în studiul algoritmilor, cât și din punctul de vedere al găsirii de soluții la anumite probleme care apar în procesul de lucru. Dar vom avea nevoie de un instrument care poate furniza astfel de informații detaliate, pentru că trebuie să ne aprofundăm în comunicarea între procese mult mai profund decât nivelul instrumentelor încorporate, pentru a înțelege exact ce fac procesele. Ceva similar ne este oferit de un instrument numit Monitor de proces, care aparține clasei de instrumente cu funcționalitate extinsă, va fi subiectul articolului nostru de astăzi.
Monitor de proces- un program pentru monitorizarea activității procesului în sistemul de operare, care, în modul de înregistrare a operațiunilor, vă permite să monitorizați activitatea proceselor în legătură cu astfel de subsisteme ale sistemului de operare precum sistemul de fișiere, registry și rețea. Vă permite să estimați cantitatea de timp CPU petrecută executând fire de execuție în cadrul proceselor.
Process Monitor oferă monitorizare în timp real pentru următoarele clase de evenimente:

  • Sistem de fișiere: crearea (deschiderea)/închiderea/citirea/scrierea/ștergerea elementelor sistemului de fișiere: fișiere, directoare, atribute, conținut.
  • Registry: crearea/citirea/scrierea/enumerarea/stergerea elementelor de registry: ramuri, chei, valori.
  • Rețea: stabilirea unei conexiuni, transferul de date, închiderea unei conexiuni. Informații despre sursa/receptorul traficului TCP/UDP. Informații generale despre protocoale și pachete. Datele transmise în sine nu sunt înregistrate.
  • Proces/proces: creați un proces, creați un fir în cadrul unui proces, închideți un fir/proces. informații detaliate despre proces (cale, linie de comandă, ID utilizator/sesiune), pornire/terminare, încărcare imagini (biblioteci/drivere), stiva de execuție.
  • Profilare: o clasă specială de evenimente înregistrate în scopul urmăririi timpului CPU petrecut de fiecare proces. Procesează utilizarea memoriei.

Imediat îmi vin în minte principalele, cele mai probabile scenarii pentru utilizarea Process Monitor:

  • În ce chei de registry acesta sau acel program își stochează setările?
  • Ce operațiuni efectuează procesul la pornire, în timpul funcționării și în etapa de închidere?
  • Cine deține aceste fișiere sau acele fișiere? Cât de des îi contactează proprietarul?
  • Care proces accesează nodurile de rețea externe?
  • Ce proces încetinește încărcarea sistemului de operare?

Process Monitor vă permite să obțineți un răspuns la întrebarea: ce acțiuni sunt efectuate de un anumit proces în sistem.

Dar, spre deosebire de instrumente precum Process Exploer, acesta nu este un utilitar în timp real care vă permite să interacționați cu procesele din mers, să închideți mânerele, să omorâți procesele și să efectuați alte acțiuni similare, este mai degrabă un jurnal global format din evenimente care au loc în; sistem de operare. Cuvântul cheie din propoziția anterioară a fost „detaliat”, deoarece aceasta nu înseamnă evenimentele pe care suntem obișnuiți să le vedem, de exemplu, în jurnalul de evenimente, ci cele de nivel inferior care apar pe un anumit set de funcții API ale unora. Componentele sistemului de operare. Aceștia, ca și alții, caracteristici unice funcționalitatea face din Process Monitor un instrument aproape indispensabil pentru depanarea și identificarea cauzelor Activitate suspicioasaîn sistem.
Dar nu te grăbi să fii fermecat, pentru că pentru fiecare butoi de miere există întotdeauna propria sa muscă în unguent. Deci, în cazul Process Monitor, există câteva „nuanțe”. Nu ar trebui să considerați Process Monitor ca un fel de baghetă magică pentru toate ocaziile, deoarece nu „vede” totul. De exemplu, nu va urmări mișcarea cursorului mouse-ului, tragerea ferestrelor, nu va afișa conținutul pachetelor de trafic de rețea, nu va afișa întreaga varietate de funcții apelate de program și aceasta nu este o listă completă a acestora. lucruri pe care Process Monitor nu le poate face. Ca în orice caz de diagnosticare a problemelor sistemului de operare, astfel de instrumente asigură, în linii mari, un set limitat de funcții și operațiuni de flux, lăsând loc de activitate și impunând specialistului să tragă concluzii independente și uneori cunoștințe destul de profunde, care stau la baza oricărei analiză. Nu presupun să spun că absolut toate problemele diagnosticate folosind Process Monitor necesită nivel inalt cunoștințe despre arhitectura sistemului de operare, dar aceasta nu este o întâmplare atât de rară. Un exemplu din sălbăticie: am întâlnit odată un bug cu Outlook 2010, când au fost setate opțiuni de compatibilitate în proprietățile programului outlook.exe, ceea ce a împiedicat programul să pornească cu eroarea de pornire „Este imposibil să deschideți folderele de e-mail implicite. . Banca de mesaje nu poate fi deschisă. Puteți urmări această problemă folosind utilitarul Process Monitor, dar trebuie să știți exact ce să căutați în teancul imens de mesaje din procesul Outlook. În acest caz, a trebuit să căutăm steaguri WINSRV08SP1 și RUNASADMIN când citim cheia AppCompatFlags, ceea ce în sine sugerează că uneori trebuie să ne imaginăm ce vrem să găsim. În mod ideal (și idealul este de neatins), ar fi frumos să ne imaginăm exact cum se modifică profilul unui program încărcat în modul de compatibilitate la nivelul evenimentelor generate în raport cu o încărcare tipică a aplicației. Până la urmă, a fost necesar să înțelegem exact de ce client de mail Nu s-a putut încărca configurația utilizatorului. Desigur, poate că acest exemplu special nu este atât de indicativ, deoarece este destul de complex și ar fi mai rezonabil să folosiți alte mijloace, vreau doar să vă atrag atenția asupra faptului că Process Monitor nu este un depanator și nu poate prindeți locul în care funcția de afișare a ferestrei este apelată cu o eroare, nu va putea pătrunde în logica funcționării unuia sau altuia funcție internă, nu va arăta starea registrelor, zonelor de memorie și a altor structuri importante pentru proces. Uneori nu există un rezultat vizibil despre lipsa accesului, așa că uneori informațiile colectate conțin implicit o descriere a problemei și trebuie să vă gândiți mai mult la rezultatele obținute de Process Monitor. Ocazional, există cazuri în care funcționalitatea Process Monitor pur și simplu nu este suficientă pentru a ajunge la fundul problemei, dar acest lucru nu scade în niciun fel meritele. a acestui instrument, deoarece în majoritatea cazurilor vă permite să ajungeți la cauza bug-ului destul de repede. Ei bine, nu veți apela imediat la depanator pentru fiecare eroare și nu veți petrece ore întregi zburând încercând să studiați algoritmul modulului defect? .. Cu toate că:)
Process Monitor include funcții din programele Sysinternals anterioare: Regmon și Regmon. Sistemul de fișiere Filemon, care au dispărut de mult de pe loc. În plus, Process Monitor poate salva întregul jurnal de evenimente într-un fișier cântărind până la 1 gigaoctet.

Cum functioneaza

În timpul monitorizării activității Process Monitor, a fost identificat caracteristică interesantă, se dovedește că programul folosește propriul driver pentru modul kernel (ce zici de semnătură? Dar semnătura este de la Symantec). Pe un sistem pe 32 de biți, Process Monitor utilizează un driver de filtru pe 32 de biți numit procmon23.sys atât în ​​timpul execuției imaginii direct executabile, cât și în faza de pornire a sistemului de operare (când este activată opțiunea Enable Boot Logging). Dar, în afară de imaginea executabilă procmon.exe în sine, nu există alte imagini în directorul de lucru al aplicației. fișiere binare? Faptul este că driverul este ambalat în corpul principalului modul executabil procmon.exe. Folosind orice instrument de lucru cu resursele fișierului PE, vă puteți asigura că driverul procmon23.sys este conținut în fișierul executabil în resursa RCDRIVERNT din directorul BINRES al secțiunii de resurse, adică face parte din fișierul principal:

Pe un sistem pe 64 de biți, când pornește Process Monitor, despachetează un fișier ascuns numit Procmon64.exe în directorul temporar %TEMP%. Imaginea procmon64.exe este conținută în resursa 1308 din directorul BINRES din secțiunea de resurse a fișierului principal procmon.exe. Dar în Procmon64.exe însuși, secțiunea BINRES a secțiunii de resurse conține un driver pe 64 de biți care este utilizat în timpul funcționării.

Driverul procmon23.sys poate funcționa și ca driver pentru modul de pornire. Când utilizatorul activează opțiunea Enable Boot Logging, Process Monitor copiază driverul în folderul %SystemRoot%\System32\Drivers și îl scrie în cheia de registry HKLM\SYSTEM\CurrentControlSet\Services cu valoarea parametrului Start = 0, care indică faptul că driverul va fi încărcat în etapa de execuție Winload.exe când sistemul de operare pornește.

Se pare că toate evenimentele monitorizate de Process Monitor trec prin acest driver de filtru. În plus, Process Monitor utilizează tehnologia Urmele evenimentului(ETW, Urmărirea evenimentelor pentru Windows), cel puțin pentru monitorizarea evenimentelor de activitate în rețea. Nu este încă complet clar dacă același driver este folosit ca controler și receptor pentru ETW sau modulul executabil în sine? Permiteți-mi să vă reamintesc că ETW este un fel de sistem de înregistrare extensibil încorporat în sistemul Windows, implementat la nivel de kernel și care permite (la cerere) să colecteze evenimente din aplicațiile în modul utilizator și modulele în modul kernel. Și după cum știm, aproape toate componentele sistemului de operare includ capacitatea de a urmări operațiunile în curs. Este clar că funcționalitatea ETW este mult mai largă, oferă informații extinse despre funcționare: comutare de context, statistici de întrerupere, apeluri de procedură amânată (DPC), rutine de servicii de întrerupere (ISR), creare și distrugere de procese și fire de execuție, I/O pe disc; , pagini de erori, tranziții ale procesorului între modurile p-state, operațiuni de registry și multe altele.

Interfață

Înainte de a începe, ar fi o idee bună să obțineți modulul executabil al utilitarului. Puteți descărca Process Monitor de aici. Utilitarul este distribuit ca o aplicație portabilă și nu necesită instalare, dar poate fi pur și simplu extras din fișier de arhivăîntr-un director arbitrar, care este extrem de util la diagnosticare medii portabileși atunci când este integrat într-un mediu de preinstalare (WinPE).

Deoarece Process Monitor folosește propriul driver, necesită drepturi de administrator local pentru a rula.

Dacă Process Monitor este lansat cu filtre instalate în sesiunile de lucru anterioare, programul deschide fereastra de setări de filtru (Filter). Acest lucru se face astfel încât utilizatorul să poată, dacă dorește, să modifice filtrele înainte de a începe procedura de colectare a datelor.
Interfața Process Monitor este extrem de simplă și arată astfel implicit:

De acord, totul ingenios este cu adevărat simplu. Simplitatea interfeței face intuitivă perceperea a ceea ce se întâmplă în sistem. Imediat după lansarea Process Monitor, acesta începe imediat să captureze evenimentele care au loc în sistemul de operare, monitorizând componente cheie precum: sistem de fișiere, registry, rețea, activitate proces/thread. După capturare, evenimentele care nu intră sub filtru sunt afișate în ordine cronologică în fereastra principală a aplicației. Mai mult, utilizatorul observă o cantitate atât de mare de date, care poate fi ușor descurajată la început, toată această tonă de date umple instantaneu fereastra principală a programului și se grăbește dincolo de limitele sale, așa cum demonstrează în mod elocvent cursorul de derulare lateral în scădere rapidă. Fiecare ieșire de linie în acest fel reprezintă un eveniment care a avut loc în sistem, a fost vizibil și capturat de driverul Process Monitor și nu a fost supus regulilor de filtrare. Corpul principal de informații este formatat sub forma unui tabel în consecință, fiecare rând este împărțit într-un număr de coloane, a căror compoziție și aranjare pot fi modificate prin setările programului. Configurația implicită folosește următoarele coloane:

Coloană Nume Desemnare
1 Ora din zi Ora în care a avut loc evenimentul. Afișat în fracțiuni de secunde în formatul HH:MM:SS,SSSSSSS cu o precizie de șapte zecimale. Precizia valorii de timp afișate depinde de acuratețea temporizatorului hardware utilizat în computer (8254/RTC/HPET).
2 Numele procesului Numele procesului. Coloana afișează numele procesului care a efectuat operația. Este afișat doar numele procesului, dar dacă treceți mouse-ul peste numele de interes, va fi afișată și calea completă către modul. Coloana afișează pictograma aplicației (pictogramă), ambalată în secțiunea de resurse a fișierului binar.
3 PID ID proces. Un parametru destul de util, mai ales pentru procese „complexe” precum svchost.exe.
4 Operațiune Operațiune. Numele operației de nivel scăzut efectuată de proces asupra obiectului țintă. De obicei prenume se potrivește cu numele funcției care este apelată pentru a efectua operația. În plus, este afișată pictograma clasei de eveniment (registru, fișier, rețea, proces).
5 cale Calea către obiectul țintă pe care procesul efectuează operația. A nu se confunda cu calea către proces (modul). Tipărit numai dacă calea este aplicabilă obiectului. Valori posibile:
  • Calea sistemului de fișiere care începe cu o literă de unitate;
  • Calea către ramura/cheia de registru;
  • Calea rețelei (adresele și porturile sursă și destinație);
  • Calea rețelei (în format UNC);
6 Rezultat Rezultatul operației. Rezultatul unei operații returnate de o funcție, indicând gradul de succes al unei anumite acțiuni. Descris mai detaliat în masa separata dat mai jos.
7 Detaliu Informații detaliate despre detaliile evenimentului. Cum ar fi: nivelul de acces solicitat, dimensiunea datelor, tipul de date, dimensiunea pachetului I/O de rețea, codurile atributelor fișierului.

Câmpul rezultat al operației (Rezultat) este unul dintre cele cheie și necesită explicații suplimentare:

Rezultat Rezultat Descriere
SUCCES SUCCES Operația a fost finalizată cu succes.
ACCES INTERZIS ACCES INTERZIS Operațiunea nu a fost finalizată. Descriptorul de securitate al obiectului nu acordă procesului drepturile de acces necesare la obiect.
ÎNCĂLCAREA ÎMPĂRĂRII ÎNCĂLCARE A ÎNTREPRINDERILOR DE FIȘIERE Operațiunea nu a fost finalizată. Obiectul este deja deschis de cineva și nu acceptă modul de partajare.
CIOCIZARE NUMELE CONFLICT DE NUMELE Procesul a încercat să creeze un obiect deja existent.
NUMELE NU GĂSIT NUMELE NU GĂSIT O încercare de a deschide un obiect inexistent: calea a fost găsită, dar numele obiectului nu a fost găsit. În ciuda formulării „tare”, în majoritatea cazurilor nu este de interes atunci când căutați probleme. Faptul este că acest rezultat este destul de des returnat ca urmare a operațiunilor regulate. Un exemplu comun ar fi verificarea existenței unui fișier sau a unei chei de registry într-o anumită cale. După returnarea unui rezultat similar, codul care a efectuat verificarea va urma pur și simplu o ramură logică diferită. De aceea: Acest rezultat poate fi folosit pentru a găsi probleme cu rezervările.
CALEA NU GĂSIT CALEA NU GĂSIT Încercarea de a deschide un obiect inexistent: calea nu a fost găsită. La fel ca și precedentul. Acest rezultat poate fi folosit pentru a găsi probleme cu rezervările.
NU EXISTA ASEMENEA FISIER FISIERUL NU EXISTA S-a încercat deschiderea unui obiect sau a unui grup de obiecte inexistent. De obicei returnat atunci când se solicită un grup de obiecte prin mască, de exemplu *.exe indică toate fișierele cu extensia .exe din directorul solicitat. Dacă nu se găsește niciun fișier care să se potrivească cu masca setată, atunci este returnat un rezultat similar.
NUME INVALID NUME GRESIT Procesul a solicitat un obiect cu un nume incorect. Probabil să apară atunci când numele obiectului solicitat este incorect, conține caractere nevalide sau este, în general, invalid.
NU MAI INTRARI INTRAREA INTERZISĂ Procesul s-a terminat cu listarea conținutului cheii de registry. De obicei se referă la finalul real acest proces, indică faptul că nu mai există intrări.
NU MAI FIȘIERE FIȘIERE LIPSĂ Apare atunci când se face o solicitare de a lista obiecte dintr-un director de sistem de fișiere. De obicei, indică sfârșitul real al acestui proces, nu indică faptul că nu mai există fișiere.
SFÂRȘIT DOSARUL SFÂRȘIT DOSARUL S-a ajuns la sfârșitul fișierului. Procesul a ajuns la sfârșitul fișierului într-una dintre operațiunile sale (de exemplu: citirea dintr-un fișier).
TAMPON PREA MIC TAMPON PREA MIC Volum tampon insuficient. Bufferul alocat este prea mic pentru a finaliza această operațiune trebuie alocat un buffer mai mare. O stare extrem de informativă care informează funcția de proces că tamponul specificat în parametrii de intrare ai funcției este mic și ar trebui mărit. În cele mai multe cazuri, nu este considerată informație cheie în analiza defecțiunilor.
DEPUNERE TAMPON DEPUNERE TAMPON Bufferul este plin. Buffer-ul alocat de aplicație este prea mic pentru a găzdui datele solicitate. Funcția apelată îi spune funcției apelante că trebuie alocat un buffer mai mare. Stare pur informativă, informează funcția de proces că tamponul trebuie mărit. În cele mai multe cazuri, nu este considerată o informație cheie atunci când se analizează eșecurile, dar continuă să sperie utilizatorii cu suspiciuni nefondate de hacking și alte activități rău intenționate :).
REPARAȚI REPETAREA Un proces a solicitat un obiect care face referire la un alt obiect. De obicei, returnat atunci când este găsit un link.
NU PUNCT DE REPARARE FĂRĂ REPROCESARE Obiectul solicitat nu se referă la un alt obiect. Apare de obicei ca răspuns la transmiterea codului de control FSCTL_GET_REPARSE_POINT către driverul sistemului de fișiere.
IO RAPID INTERZIS I/O RAPID INTERZIS Mecanismul FAST I/O nu este disponibil pentru obiectul solicitat, adică o solicitare I/O care utilizează mecanismul FAST I/O către driver nu este acceptată. În cele mai multe cazuri, nu este considerată informație cheie în analiza defecțiunilor.
FIȘIER BLOCAT NUMAI CU CITITORI FIȘIERUL ESTE NUMAI CITIT Fișierul sau proiecția fișierului este blocat. Fișierul este doar pentru citire. Managerul de memorie contactează sistemul de fișiere pentru a obține o blocare în timp ce secțiunea de fișier este creată în memorie în timpul procesului de mapare. Cu alte cuvinte, acest rezultat indică faptul că scrierea în fișier este blocată în timp ce secțiunea de fișier este creată, iar acum nimeni nu are acces de scriere pentru a acestui dosar. În acest fel, managerul de memorie se poate asigura că datele sunt imuabile în timpul perioadei de blocare. Rezultatul trebuie considerat informativ.
FIȘIER BLOCAT CU SCRIITORI FIȘIERUL ESTE SCRIT Fișierul sau proiecția fișierului este blocat. Cel puțin un utilizator poate scrie date pe acesta.
ESTE DIRECTORUL OBIECTUL ESTE UN DIRECTOR Obiectul solicitat este un director.
CERERE INVALIDĂ A DISPOZITIVULUI CERERE INVALIDĂ DE DISPOZITIV Această solicitare nu este validă pentru dispozitivul țintă.
PARAMETRU INVALID PARAMETRU INCORECT Un parametru nevalid a fost transmis serviciului sau funcției.
NU SE ACORDĂ NU E DISPONIBIL NU E ASIGURAT NU E PREVAZUT Blocarea fișierului solicitată nu poate fi acordată din cauza altor blocări.
ANULAT ANULAT Solicitarea I/O a fost anulată. De exemplu, un apel la NotifyChangeDirectory revine adesea atunci când verifică modificările unui director de sistem de fișiere.
CALEA REA LA REȚEA CALEA ÎN REȚEA NU GĂSIT Calea de rețea nu a fost găsită.
NUME RĂUT DE REȚEA NUMELE REȚELEI NU A GĂSIT Specificat numele retelei nu a fost detectat pe gazda la distanță.
MEDIA PROTEJAT LA SCRIERE MEDIA ESTE PROTEJAT LA SCRIERE Mass-media nu poate fi scrisă. Media este protejată la scriere.
CHEIE ȘTERSĂ SECȚIUNEA ȘTERSĂ A fost făcută o încercare de a opera pe o cheie de registry care a fost marcată pentru ștergere.
NEIMPLEMENTAT NEIMPLEMENTAT Operația solicitată nu a fost finalizată deoarece nu este implementată în obiectul țintă.
FĂRĂ EAS LA FIȘAR FĂRĂ ATRIBUTE EXTINSE Nu s-au mai găsit atribute extinse. Eroarea apare atunci când se încearcă solicitarea de atribute extinse de la un obiect care nu le are.
OPLOCK NU ESTE ACORDAT BLOCAREA REUSITĂ NU ESTE FURȚĂ Refuzul de a acorda o blocare oportunistă. Un oplock (blocare oportunistă) este o blocare care permite unui client (de rețea) să blocheze un fișier situat pe server și să memoreze în cache datele din fișier la nivel local (pe partea client), împiedicând în același timp alți clienți să modifice fișierul. Blocarea oportunistă este legată de mecanism fișiere offline, vă permite să reduceți traficul de rețea și să îmbunătățiți timpul de răspuns de la server. Starea OPLOCK NOT GRANTED este un răspuns la transmiterea codului de control FSCTL_REQUEST_OPLOCK către driverul sistemului de fișiere. Folosit pentru a diagnostica obiectele problematice care nu funcționează corect cu resursele de rețea.

* - Am încercat să folosesc culoarea pentru a marca acele rezultate care pot fi semnificative pentru găsirea problemelor, dar totul este destul de arbitrar și prezența unor rezultate poate să nu indice o eroare, totul trebuie luat în considerare în contextul a ceea ce se întâmplă și în jur evenimente.
Evenimentele nou înregistrate sunt adăugate la sfârșitul listei de evenimente în ordine cronologică și, în consecință, dacă există multe evenimente, acestea trec instantaneu dincolo de limitele ferestrei active. Astfel, când setări de bază interfață, informațiile din fereastră rămân statice și reflectă doar evenimentele capturate primele; Cu toate acestea, acest comportament al programului poate fi modificat prin activarea Autoscroll a listei de evenimente prin activarea opțiunii corespunzătoare sau prin apăsarea combinației de taste Ctrl + A. În acest caz, lista de evenimente se va derula continuu în sus, arătându-le pe cele mai recente evenimente de sistem V modul real timp.

Bara de instrumente

Să explicăm scopul butoanelor situate pe bara de instrumente a interfeței utilitarului Process Monitor:

De la stanga la dreapta:

  • Deschidere - Încărcarea evenimentelor salvate anterior (urme);
  • Salvare - Salvează toate evenimentele capturate (urme);
  • Captură - Activați/Dezactivați capturarea evenimentelor;
  • Autoscroll - Autoscroll evenimente în ecranul principal;
  • Clear - Șterge fereastra principală și toate evenimentele capturate;
  • Filtru - Configurarea filtrării și evidențierii evenimentelor;
  • Highlight - Configurarea evidențierii evenimentului;
  • Include Process From Window - Configurați filtrarea evenimentelor pentru o anumită fereastră de pe desktop. Vă permite să îndreptați ținta către fereastra selectată, Process Monitor însuși va determina dacă fereastra aparține unui proces și va activa filtrarea prin acest proces;
  • Show Process Tree - Arborele de proces;
  • Găsiți - Căutați evenimente pe baza unor criterii specificate;
  • Salt la obiect - Salt la o cheie de registry sau un fișier. Process Monitor analizează conținutul coloanei Path a rândului selectat, lansează exploratorul/editorul de registry și deschide elementul arborescent corespunzător;
  • Show Registry Activity - Comută starea de afișare a evenimentelor de activitate din registry între toate evenimentele de sistem;
  • Show File System Activity - Comutați starea de afișare a evenimentelor de activitate ale sistemului de fișiere între toate evenimentele de sistem;
  • Show Network Activity - Comutați starea de afișare a evenimentelor de activitate în rețea între toate evenimentele de sistem;
  • Show Process and Thread Activity - Comutați starea de afișare a evenimentelor de activitate proces/thread între toate evenimentele de sistem;
  • Afișare evenimente de profilare - Comută starea de afișare a evenimentelor de profilare între toate evenimentele de sistem. Profilare – evenimente înregistrate Utilitate de proces Monitorizați pentru a calcula cantitatea de timp CPU și memorie utilizată de fiecare proces.

Taste rapide

Combinaţie Descriere
Ctrl+E Activarea/oprirea înregistrării evenimentului.
Ctrl+X Ștergerea jurnalului de evenimente capturate.
Ctrl+A activați/dezactivați defilarea automată a evenimentelor.
Ctrl+F caută un eveniment printre toate evenimentele capturate.
Ctrl+C Copiază evenimentul selectat ca un șir de text delimitat.
Ctrl+J mergeți la obiectul selectat.
Ctrl+L deschiderea ferestrei cu setările filtrului.
Ctrl+R Resetați filtrul la setările implicite.
Ctrl+H deschiderea ferestrei de iluminare de fundal.
Ctrl+T deschiderea arborelui de proces.

Filtrarea evenimentelor

După cum sa menționat deja, numărul de evenimente care apar (generate de diverse componente) în sistem este destul de mare. Numărul de evenimente pe care Process Monitor le „văd” este mai mic, dar nu cu mult. Apare o întrebare rezonabilă: avem nevoie de toate evenimentele? Răspunsul este evident. Majoritatea evenimentelor care sunt afișate în fereastra principală a programului sunt complet inutile în contextul anumitor sarcini de utilizator extrem de specializate. Ei bine, utilizatorul nu trebuie să vadă evenimentele de încărcare a imaginii unui program de actualizare lansat brusc, în timp ce este ocupat să studieze cheile de registry care stochează configurația programului de care este interesat. Cu scopul de a ascunde evenimentele inutile, Process Monitor are instrumente de filtrare flexibile și puternice. Filtrul vă permite să ascundeți evenimentele inutile, limitând astfel numărul de elemente afișate și restrângând zona de căutare a problemei.

Prin filtrare, puteți ascunde un eveniment, adică dezactivați afișarea acestuia. Cu toate acestea, toate evenimentele vor fi înregistrate și puteți vizualiza oricând evenimentele filtrate (ascunse), dezactivând (resetând) filtrul.

Deoarece filtrarea este unul dintre elementele cheie ale Procmon, capabilitățile sale sunt foarte bine dezvoltate în acest program. Puteți filtra evenimente folosind orice atribute de eveniment disponibile pentru program. Există mai multe moduri de a filtra evenimentele în Process Monitor:

Filtrați după clasă

Aceasta este cea mai generală, s-ar putea spune filtrarea grosieră a evenimentelor, care vă permite să excludeți o întreagă clasă de evenimente din rezultat dintr-o dată: registru, sistem de fișiere, rețea, activitate de proces/thread, evenimente de profilare. Configurarea filtrării după clasa de eveniment este reprezentată de cinci butoane din partea dreaptă a barei de instrumente:

În consecință, în momentul în care oricare dintre butoanele de clasă enumerate este dezactivat (apăsat) de către utilizator pe bara de comandă, un filtru corespunzător cu instrucțiunea Exclude este adăugat la setul general de filtre, ascunzând toate evenimentele acestei clase de la ieșire. .

Meniul de filtrare

Indiferent de tipurile de filtre folosite în Process Monitor, toate sunt disponibile prin meniul Filtru și sub-elementul Filtru. Acesta este un set complet (general) de parametri de filtrare și este prezentat în următoarea formă:

Aceeași fereastră de setări de filtru poate fi apelată rapid în alte moduri: apăsând combinația de taste Ctrl + L sau făcând clic pe butonul Filtru din bara de instrumente. Fereastra de setări de filtru oferă utilizatorului opțiuni destul de bogate pentru mascarea evenimentelor din sistem. Fereastra Process Monitor Filter este împărțită în două părți: partea de sus conține elemente de interfață pentru adăugarea unui filtru, partea de jos conține o listă de filtre deja aplicate la ieșirea standard. Filtrul este adăugat prin trecerea de la stânga la dreapta prin toate atributele, care, la rândul lor, sunt reprezentate prin liste derulante. Unele atribute sunt legate între ele, adică selectarea unui atribut dintr-o listă poate duce la setarea automată a valorii în alte liste. În unele câmpuri puteți edita valoarea. După finalizarea formării, pentru a adăuga un filtru, trebuie să faceți clic pe butonul Adaugă, acesta adaugă noi parametri de filtrare la filtrele prezentate în zona inferioară a ferestrei.
Pentru a edita regulile filtrului selectat, faceți dublu clic pe linia corespunzătoare, descriind filtrul, în partea de jos a ferestrei. Acest lucru va muta parametrii la top parte(se vor completa condițiile corespunzătoare), unde le puteți edita și apăsând din nou butonul Adaugă, finalizați editarea filtrului, mutându-l din nou în partea de jos a ferestrei, în lista de filtre active. Puteți elimina un filtru folosind butonul Eliminare. După editarea filtrelor, acestea pot fi puse în aplicare (activate) făcând clic pe butonul OK sau Aplicare. Pentru a restabili setările implicite ale filtrului la starea inițială care era prezentă la prima lansare a programului, faceți clic pe butonul Resetare.
După cum probabil ați observat, în mod implicit, lista de filtre predefinite conține un set de reguli de tip Exclude. Aceste reguli servesc la mascarea evenimentelor care, în opinia autorilor, sunt evenimente de activitate ale acelor componente ale sistemului de operare care, în majoritatea scenariilor, nu Informatii utile pentru a depana problemele aplicației. Aici puteți găsi excepții pentru: procesele Procmon (Process Monitor), Procexp (Process Explorer), utilități Autoruns, procese de sistem, solicitări I/O de nivel scăzut Drivere Windows IRP_MJ, operațiuni FAST_IO de nivel scăzut, evenimente de urmărire, evenimente pagefile.sys, evenimente de metadate ale managerului NTFS.

Filtru rapid

Puteți aplica un așa-numit „filtru rapid” unora dintre parametrii evenimentului afișați în fereastra principală. Se activează făcând clic dreapta pe un eveniment din fereastra principală a programului:

În meniul contextual care se deschide, puteți vedea mai multe metode diferite de filtrare simultan. În funcție de valoarea cărei coloane din rând a fost apăsat butonul din dreapta al mouse-ului, putem exclude sau include din întregul tablou de ieșire evenimente care au o potrivire în valoarea coloanei. Acest lucru se realizează prin selectarea articolului corespunzător, începând cu Include ... (Include) și Exclude ... (Exclude). Meniul contextual conține și următoarele elemente: Editare filtru..., Exclude evenimente înainte, Exclude evenimente după.

Filtrarea după proprietarul ferestrei

Pe lângă opțiunile de filtrare de bază, utilitarul Procmon are capacitatea de a filtra evenimentele după mânerul ferestrei aplicației (identificator). Aceasta este o caracteristică funcțională destul de convenabilă, deoarece oferă utilizatorului posibilitatea de a vizualiza evenimentele procesului a cărui fereastră apare pe desktop. Pentru a activa această funcționalitate, găsiți pictograma încrucișată pe bara de instrumente:

Trageți-l în fereastra care vă interesează și Procmon va crea un filtru corespunzător pentru procesul care deține fereastra selectată, modificând în consecință rezultatul din fereastra principală.

Evidențierea evenimentului

Pe lângă filtre, Procmon are capacitatea de a marca evenimente evidențiind-le cu culoare. În timp ce filtrarea ascunde evenimentele inutile din rezultat, evidențierea pur și simplu evidențiază evenimentele necesare din listă. Direct, se pare, nu se aplică filtrelor, deoarece nu ascunde evenimentele, ci doar le marchează cu o culoare diferită în listă. Puteți deschide fereastra de setări de iluminare de fundal a monitorului procesului fie apăsând combinația de taste Ctrl + H, fie făcând clic pe pictograma corespunzătoare din bara de activități. Arata cam asa:

După cum puteți vedea, este identic cu fereastra de setări a filtrului, cu excepția faptului că în mod implicit nu are setări, adică iluminarea de fundal este complet dezactivată. Algoritmul pentru setarea parametrilor de iluminare de fundal și eșantionarea rezultatelor ferestrei Evidențiere este în multe privințe similar cu cele din fereastra Filtru.

Căutați după evenimente

Rezultatele de filtrare sunt excelente! Filtrul ne permite să manipulăm în mod flexibil un eșantion din fluxul general de evenimente, cu toate acestea, în majoritatea cazurilor este destul de dificil să creăm condiții în care gama de evenimente filtrate să fie restrânsă la un minim acceptabil. Există încă o mulțime de rezultate și, uneori, în zona rândurilor filtrate trebuie să găsiți o constantă descoperită brusc. Uneori este util să găsești câteva cuvânt cheieîn întregul volum de informații capturate fără a înțelege în ce coloană se poate afla, astfel încât crearea unui filtru se dovedește a fi problematică. Acestea și multe alte puncte operaționale vorbesc în favoarea utilizării unei căutări tradiționale, familiară tuturor încă din copilărie. Fereastra de căutare este deschisă apăsând combinația de taste Ctrl + F sau parcurgând meniul Editare - Găsire:

Deja familiar de la alții vor fi afișate produse Microsoft fereastra de căutare. Căutarea se efectuează folosind valorile tuturor câmpurilor de ieșire ale ferestrei principale Process Monitor, fără excepție, iar atunci când este găsită prima potrivire, utilitarul derulează ecranul la valoarea găsită și marchează întreaga linie cu fragmentul de cheie detectat. in albastru.

Detaliile evenimentului

Process Monitor primește o cantitate destul de mare de Informații suplimentare. Toate sunt afișate în coloana Detalii. Cele mai multe dintre ele sunt pur informaționale, așa că de obicei sunt omise în timpul analizei. Aici puteți găsi nivelul de acces solicitat pentru funcționare, detalii despre solicitările de funcții, Opțiuni suplimentare unele funcții, nume de pachete de drivere etc.

Explorarea evenimentului

Toate informațiile colectate de utilitarul Process Monitor în procesul de înregistrare a evenimentelor sunt prezentate sub forma unui tabel imens, fiecare rând reflectând doar o descriere generalizată a unui anumit eveniment care a avut loc. Deci ce, credeți că aceste informații prezentate în ecranul principal al utilitarului sub formă de informații limitate împărțite în mai multe coloane sunt suficiente? Uneori da, dar de multe ori nu! Trebuie să acordăm credit autorilor Process Monitor pentru că au furnizat logica pentru un studiu mai detaliat al evenimentelor înregistrate. Să facem dublu clic pe linia de eveniment și să vedem ce se întâmplă după dublu clic, se deschide o fereastră separată, care arată astfel:

În fila Eveniment, vedem informații generale despre evenimentul care ne interesează. În general, această filă specială nu este de mare valoare pentru cercetător, deoarece conține informații care pot fi obținute în interfața de utilitate în alte moduri. Dar cele două file rămase ale ferestrei ne pot interesa cu siguranță. Fila din mijloc se numește Process și arată astfel:

Aici vedem calea către modul (Cale), Linie de comanda, cu care a fost lansat modulul (Linia de comandă), utilizatorul cu privilegiile căruia a fost lansat procesul (Utilizator), identificatorul sesiunii de autentificare (Auth ID) în care rulează procesul, proprietarul operațiunii și integritatea nivel (Integritate), atribuit proprietarului de proces al operațiunii la pornire. O atenție deosebită este acordată ferestrei de informații cu o listă de biblioteci încărcate în (Module), care ajută foarte mult la identificarea musafiri nepoftiti la fel de diferite feluri malware. Dar pentru cercetătorii avansați, valoarea reală este ultima filă Stivă din dreapta, care vă permite să vedeți stiva de apeluri a firului principal al unui proces:

După cum vedem, în această filă puteți găsi lanțul clasic de apeluri de funcții, binecunoscut nouă din depanatorul WinDbg, numit stiva de apeluri. În primul rând, vă permite să urmăriți secvența apelurilor de funcții din momentul în care începe să se execute funcția de pornire a firului de execuție. În al doilea rând, prin secvența apelurilor de funcții este posibil să se determine căror module (biblioteci) aparțin aceste funcții, identificând și componentele sistemului, care fie necesită actualizare, fie nu ar trebui să fie folosite deloc în acest modul (de exemplu: viruși).

Cazuri de utilizare

Câteva note despre stările programului Process Monitor:

  • Un eveniment al cărui câmp de operare este Load Image ajută la diagnosticarea problemelor de pornire a programului. Dacă programul nu pornește dintr-un motiv oarecare, atunci căutați un eveniment cu operația de încărcare a imaginii în lista generală și uitați-vă la listele de DLL-uri care sunt încărcate (descrise de evenimentele lor) imediat după evenimentul de încărcare a imaginii. Dacă ne amintim algoritmul de încărcare a unei imagini, vom înțelege că de obicei operația Load Image este urmată de evenimente de căutare pentru bibliotecile DLL necesare. Adevărul este că încărcător de pornire Windows pregătește spațiul de adrese al procesului proiectând totul în el necesare programului biblioteci și efectuarea de legături implicite pe stadiul inițial. Dacă în oricare dintre programele principale necesare DLL-uri a apărut o eroare la încărcarea imaginii acesteia, este evident că bootloader-ul Windows nu va putea porni programul principal. Evenimentul de încărcare a imaginii este înregistrat cu starea „acces refuzat” (ACCES INTERDAT);
  • Statusuri la care ar trebui să le acordați atenție mai întâi: ACCES INTERDAT, ÎNCĂLCARE A ÎNTREPRINDERILOR, NUME NU GĂSIT (există excepții de la acesta din urmă). Statutul NAME NOT FOUND este în majoritatea cazurilor un statut de finalizare destul de tipic, nu ar trebui să-i exagerați atât de mult și să îl considerați vinovat de toate problemele. Adesea, starea este afișată atunci când aplicația verifică prezența unui fișier sau a unei chei de registry (conținând configurația programului), iar pe baza rezultatelor acestei verificări, execută cutare sau cutare cod, adică face ramificare logică în funcție de rezultatul cererii. Este posibil ca programul să nu găsească cheia de registry care conține propria sa configurație și, în astfel de cazuri, vom vedea aceeași stare NAME NOT FOUND. Pe scurt, starea NAME NOT FOUND trebuie privită în contextul evenimentului care a dus la acesta.
  • Pentru a determina vinovatul încărcării excesive a subsistemului de disc: lansați Procmon, creați un filtru cu setările Calea - începe cu - C:\ (deși orice interesant poate fi specificat aici unitate logică) și faceți clic pe OK. Apoi, după o scurtă colectare de date (~ un minut), accesați meniul Instrumente și selectați elementul Rezumatul activității procesului. În fereastra care se deschide, sortați după coloana File Events și obțineți în partea de sus a listei numele proceselor care lucrează activ cu sistemul de fișiere. Apoi, pentru a afla ce fișiere sunt implicate în schimbul intensiv de date, puteți selecta meniul Instrumente și elementul Sumar fișier, iar în fereastra care se deschide, observați lista fișierelor implicate în operațiunile de pe disc. Ieșirea este sortată automat după coloana Total Events, astfel încât în ​​partea de sus a listei vedem fișierele cel mai intens utilizate în operațiunile de I/O pe disc.

Diagnosticarea fazei de pornire

Destul de des există situații în care problemele cu sistemul de operare încep cu mult înainte ca interfața cu utilizatorul să fie desenată, deja în fazele de pornire. Pentru a diagnostica astfel de defecțiuni ale rețelei, există o serie de instrumente specializate, cum ar fi, de exemplu. Utilitarul Process Monitor se încadrează bine în această gamă. Procmon înregistrează evenimentele tuturor proceselor care se execută în fazele de pornire, folosind driverul pentru faza de boot numit procmon23.sys (numele poate varia de la versiune la versiune), care a fost descris la începutul articolului. Din păcate, driverul pornește în stadiul modulului Winload.exe, ceea ce împiedică fixarea mai multor stadiu timpuriu Bootmgr, cu toate acestea, în cele mai multe cazuri, puteți închide ochii la acest mic detaliu. Activarea înregistrării procesului de pornire este activată prin opțiunea Enable Boot Logging din meniul Opțiuni.

Pe lângă activarea mecanismului, Procmon oferă să activeze profilarea firelor la intervale regulate. Acest lucru este important deoarece, în majoritatea cazurilor, problemele de boot sunt legate de muncă lentă anumite procese. Pentru a urmări astfel de procese de „încetinire”, este activată profilarea, ceea ce vă permite să creați un fel de instantanee ale activității firelor din cadrul unui proces (stiva de apeluri și alte date) la intervale regulate. Ca rezultat, informațiile înregistrate ajută la înțelegerea exactă a operațiunilor pe care thread-ul petrece timpul CPU.
După activarea opțiunii Enable Boot Logging, puteți reporni sistemul de operare. După ce descărcarea este finalizată, rulați utilitarul Process Monitor pentru a salva fișierele jurnal ale procesului de descărcare și vedeți următoarea casetă de dialog:

În care ni se cere să salvăm evenimentele procesului de descărcare într-un fișier jurnal separat cu extensia .pml. În funcție de cantitatea de informații, fișierul jurnal poate fi salvat fie într-un singur fișier, fie împărțit într-o serie de fișiere de dimensiuni aproximativ egale.

Cantitatea de informații înregistrate de driverul Process Monitor în fazele de pornire, pentru un sistem de operare „încărcat mediu” :) sisteme Windows 7 SP1 x64, suficient de mare. O dimensiune tipică cu profilarea firelor activată poate depăși 1500 de megaocteți.

După salvarea fișierelor jurnal ale activității fazei de pornire, le puteți analiza ulterior deschizându-le în Process Monitor sau dublu click prin fișier .pml sau prin deschiderea acestuia direct prin meniul Fișier - Deschidere. Cu toate acestea, există o avertizare aici: dacă fișierul jurnal al procesului de pornire sau setul de fișiere este prea mare și utilitarul nu găsește suficient spațiu în fișierul de pagină sau procesează spațiu virtual pentru a crea un buffer, atunci eroarea „Imposibil de deschis Bootlog .pml pentru citire” este afișat”. Am rezolvat-o personal activând temporar fișierul de schimb, pe care în mod tradițional l-am dezactivat complet.

Când viteza de descărcare scade WindowsÎn mod tradițional, este recomandat să curățați sistemul de fișiere temporare și să le dezactivați folosind programe de optimizare servicii neutilizate, cu toate acestea, toate aceste metode nu sunt întotdeauna eficiente. După cum arată practica, ștergerea datelor temporare și curățarea registrului este complet inutilă, iar utilizarea optimizatorilor, de asemenea, nu are efectul dorit, deoarece algoritmii încorporați în ele acționează conform unui model, dezactivând adesea componente care nu ar trebui să fie dezactivate.


Desigur, există utilități speciale care vă permit să determinați cu exactitate motivele încărcare lentă, dar utilizarea lor poate cauza dificultăți nu numai pentru utilizatorii obișnuiți, ci și pentru administratorii de sistem începători. Există o cale de mijloc - puteți determina aplicații, drivere și servicii care încetinesc pornirea Windows folosind un utilitar gratuit . Deși vă permite să identificați cu exactitate cauzele încărcării lente a sistemului, este, de asemenea, relativ ușor de utilizat.

Utilitarul este multifuncțional, dar în acest exemplu ne interesează o singură funcție - monitorizarea lansată în timpul pornirii Windows proceselor. Funcționează după cum urmează: în cheia de registry HKLM\SYSTEM\CurrentControlSet\Services este creat serviciu special, încărcând driverul procmon23.sys, care urmărește lansarea tuturor proceselor care pornesc după lansarea fișierului de boot principal Winload.exe . Datele sunt scrise în jurnal și afișate în fereastra utilitarului în forma grafica, ceea ce face mai ușor să determinați care componentă durează cel mai mult pentru încărcare.

Deci, hai să descarcăm de pe site-ul dezvoltatorului technet.microsoft.com/en-us/sysinternals/processmonitor.aspxși rulați ca administrator. Din meniul principal selectați -> Activati ​​permisiunea de a intra in sistem.

În fereastra care se deschide, bifați caseta Generați evenimente de profilare a firelor cu butonul radio activat Fiecare secunda.

Clic "BINE"Și reporniți computerul. Când apare desktopul, rulați din nou. Se va deschide o fereastră de notificare „A fost creat un jurnal al activității la pornire...”. Clic "BINE"și salvați fișierul P.M.L. în orice locație convenabilă pentru dvs.

Notă: înregistrarea evenimentelor de către șofer procmon23.sys va începe imediat după repornirea sistemului și va continua în fundal până când utilizatorul rulează utilitarul . Dacă utilitarul nu este pornit, fișierul de descărcare temporară procmon.pmbîn directorul *C:\Windows* va umple tot spațiul liber pe disc.

În exemplul nostru, au fost create două fișiere dump Bootlog.pmlȘi Bootlog-1.pml dimensiune totală 464 MB . Înainte de a începe să le analizați, faceți clic în fereastră pe titlul tabelului de date cu butonul din dreapta al mouse-ului, faceți clic

Și marcați elementul în fereastra care se deschide (coloană) .

Și setați parametrii în fereastra de creare a filtrului Durata, mai mult decâtȘi 10 , așa cum se arată în captura de ecran.

10 în acest exemplu, acesta este numărul de secunde petrecute procesele pentru a-și efectua operațiunile.

Acum faceți clic mai întâi "Adăuga", Apoi "BINE"și, ca rezultat, fereastra utilitarului va afișa procesele care au durat cel mai mult timp pentru a se încărca.

Pentru mai mult analiză detaliată poți folosi opțiunea din meniu Instrumente, care afișează procesele ca o listă arborescentă care indică Informații suplimentare despre durata, orele de început și de sfârșit ale fiecărui proces.

Prin identificarea proceselor problematice în acest fel și comparându-le cu fișierele și serviciile executabile, puteți realiza o optimizare corectă a sistemului, eliminând acestea din urmă de la pornire.

Mulți oameni sunt interesați de întrebarea „Cum aflu ce face un program când instalează, pornește, închide, rulează? Cum pot urma programul? Răspuns: Folosind un alt program numit Process Monitor.

ProcesMonitorizați- un program pentru Windows care arată în timp real de unde sunt scrise sau șterse fișierele, ce fișiere sunt citite de un anumit program, ce acțiuni face programul cu registry, cum și când programul monitorizat folosește rețeaua (Internet) și de asemenea, monitorizează procesele și fluxurile. Programul este echipat cu un filtru puternic pentru a urmări procesele sau evenimentele necesare. Process Monitor este instrumentul principal pentru depanarea problemelor sistemului și pentru a scăpa de malware (viruși).

Acum să aruncăm o privire mai atentă asupra modului de lucru cu programul și să-l analizăm funcții cheie. Pentru informații mai detaliate despre program, consultați coloana „video” din dreapta, deoarece pentru descriere completa programul va necesita scrierea unei cărți).

Așa arată fereastra principală a programului când porniți Process Monitor. Înregistrarea începe imediat după lansare procesele Windows aceasta este accesarea și crearea fișierelor, accesarea registrului, rețelei etc.

Desigur, o cantitate foarte mare de informații este înregistrată simultan și nu este foarte ușor să găsiți ceea ce aveți nevoie în ea, dar aici filtrele ne vor veni în ajutor, dar mai întâi ne vom uita la interfața programului puțin mai târziu.

Pe panoul principal al programului:

Principalele sale funcții sunt postate. Grupul din dreapta de pictograme

Acestea sunt pictogramele de filtrare preliminare (grosiere). De la stânga la dreapta: afișați accesul la registry, la sistemul de fișiere, la rețea (Internet), afișați procese și fire de execuție, profilare pentru fiecare proces. În consecință, dacă selectați o pictogramă, de exemplu, un acces la registru, atunci va fi afișat numai accesul la registru, dacă sunt două, apoi două etc. Remarc că, chiar dacă nu selectați nicio pictogramă, înregistrarea continuă și dacă o porniți, vor fi afișate evenimentele înainte de a fi activată.

Următoarele două puncte sunt căutarea și tranziția:

În consecință, dacă faceți clic pe căutare, va apărea o fereastră în care va trebui să introduceți o frază sau parametri, iar dacă faceți clic pe Go, Explorer se va deschide, dacă vă uitați, de exemplu, ce fel de fișier este creat sau editorul de registry , dacă vă uitați la ce parametri de registry sunt modificați sau citiți.

Următoarele filtre de grup de meniu

Primul element este filtrul în sine, când se face clic, se va deschide o fereastră în care va trebui să selectați parametrii de filtrare.
Al doilea punct este evidențierea anumitor linii, i.e. Este, de asemenea, un filtru, dar selectează pur și simplu datele necesare.
Al treilea punct „vedere” este necesar pentru a adăuga rapid un proces dacă nu știți cum se numește. De exemplu, o fereastră s-a deschis, dar nu știți ce fel de fereastră este, faceți clic pe cruce și țineți-l apăsat, trăgând-o pe fereastra care apare, va fi creat automat un filtru care va monitoriza acest proces.

Următorul grup de meniu este responsabil pentru afișarea evenimentelor în fereastra principală

Lupa se oprește și începe urmărirea. Lista cu o săgeată derulează automat când apare o nouă intrare. Iar lista cu o radieră este pentru a șterge lista de evenimente care sunt afișate la robinet.

În ultimele două meniuri, cred că nu este nevoie să explic multe despre salvarea sau încărcarea proceselor urmărite

Acum să vedem cum funcționează programul folosind un exemplu. Să presupunem că vrem să aflăm ce face o aplicație pe computerul nostru. Lăsați această aplicație să fie un bloc de note. În procese știm dinainte că se numește ca blocnotes.exe. Lansați Process Monitor, apăsați butonul „Filtru” (Ctrl+L) și vedeți următoarea fereastră:

În mod implicit, include deja mai multe filtre care exclud diferite tipuri din listă procesele sistemului, procese ale programului Process Monitor în sine și altele care de obicei nu sunt necesare pentru analiză.

Să creăm propriul nostru filtru care va arăta doar procesul blocnotes.exe. Pentru a face acest lucru, faceți clic pe prima săgeată în jos, unde în mod implicit scrie „Arhitectură” și selectați „Nume proces” din lista propusă. Apoi, din a doua listă, selectați elementul „este”, care este implicit Fig. 2. În următorul meniu putem selecta un proces dintre cele care rulează deja sau îl putem adăuga noi înșine scriind „notepad.exe” în câmp. Încă nu am lansat bloc-notesul Să-l scriem noi înșine. Ultimul punct este cum să poziționați acest proces „Include” pentru a-l lăsa doar și „Exclude” pentru a-l exclude din fluxul general. Selectați „Include” Fig.4. Faceți clic pe butonul „Adăugați” de mai jos pentru a adăuga un filtru.

Ca urmare, ar trebui să obținem următoarele:

Facem clic pe „Aplicați” „Ok” în partea de jos și vedem că lista din program a devenit clară, asta pentru că am activat filtrul pentru un proces care nu rulează încă și am adăugat o condiție pentru a ignora totul, cu excepția acestui proces.

Lansăm notepad și vedem următoarele:

Prima linie arată începutul procesului cu PID și PID părinte, apoi este creat și încărcat un fir fisiere grafice, un fișier este creat în folderul C:WindowsPrefetch și numit NOTEPAD.EXE-D8414F97.pf. Putem merge imediat la acest folder pentru a face acest lucru, doar selectați a cincea linie în acest caz și faceți clic pe panoul principal săgeată verde, iar folderul în care a fost creat acest fișier se va deschide imediat. Urmează încărcarea diferitelor biblioteci de sistem, citirea setărilor din registru, atât de sistem, cât și de utilizator și multe altele.

Există o altă pictogramă în meniul principal care nu a fost menționată înainte:

Aceasta este pictograma arborelui procesului. Dacă faceți clic pe el, veți vedea următoarea fereastră:

Acest arbore arată ce program, ce proces a fost lansat, folderul de unde a fost lansat, cât timp a durat procesul și o mulțime de informații diferite.

Asta este tot, așa cum am spus deja, pentru a arăta totul va necesita scrierea unei cărți întregi, așa că urmăriți videoclipul din dreapta, spune mai multe și, de asemenea, arată).