מסך שחור למשך חצי דקה בעת עליית ווינדוס
-
@yossiz אמר במסך שחור למשך חצי דקה בעת עליית ווינדוס:
@searchnicks
א. אפשר לשמור קובץ מ-procmon על ידי תפריט file>save, ואז ניתן להציג את הנתונים ממנו ב-procmon זה יותר טוב מלשתף קובץ אקסל.הם שוקלים 3 גיגה, רלוונטי?
ב. נראה לי שיש לך טעות. פעולת CreateFile כמעט אף פעם לא מייצר קובץ... בד"כ זה פותח קובץ. אם אתה מחפש כתיבה לדיסק, חפש WriteFile. וכתיבת קובץ כמעט לא קיים בקובץ ששיתפת.
אז מה כל הקבצים האלו שנוצרו?
איך אני מבטל את ההפניות האלו? -
@searchnicks אמר במסך שחור למשך חצי דקה בעת עליית ווינדוס:
הם שוקלים 3 גיגה, רלוונטי?
לא כל כך... אבל שאפשר לשמור קובץ מסונן עם המידע הרלוונטי.
תעשה סינון על פעולת WriteFile ותשמור רק את החלק הזה:אז מה כל הקבצים האלו שנוצרו?
אני לא מבין מה אתה שואל.
איזה קבצים נוצרו? אני לא רואה אותם באקסל ששיתפת, (יש רק 137 פעולות של WriteFile שם במשקל כולל של MB ספורות בלבד)איך אני מבטל את ההפניות האלו?
על איזה "הפניות" אתה מדבר?
-
@yossiz אמר במסך שחור למשך חצי דקה בעת עליית ווינדוס:
על איזה "הפניות" אתה מדבר?
@yossiz אני מדבר על כל השורות שמפנות לתיקיות זמניות שמתחילות בMEI11,
-
@yossiz אמר במסך שחור למשך חצי דקה בעת עליית ווינדוס:
לא כל כך... אבל שאפשר לשמור קובץ מסונן עם המידע הרלוונטי.
תעשה סינון על פעולת WriteFile ותשמור רק את החלק הזה:מצורף קובץ מסונן, הוא מכיל 309K שורות...
כיצד אני מאתר את הפקודה שמפעילה את כל השורות האלו?תוכל לראות שכמעט כל הנתיבים מופיעים בסדר הבא
-
@searchnicks אמר במסך שחור למשך חצי דקה בעת עליית ווינדוס:
מצורף קובץ מסונן
תודה, זה הרבה יותר שימושי מקובץ אקסל. (לא עשית סינון על WriteFile, אני לא יודע בדיוק איזה סינון עשית... אבל לא משנה, אני אסביר מה קורה בשורות שהבאת, קשה לראות מחלק ההקלטה שהבאת האם הם אלה שגורמים לאיטיות שאתה חווה, אבל מסתבר שכן)
שים לב למשהו מעניין, יש כאן פעולה ש-procmon לא מכיר אותה וזה מופיע כ-
<unknown>
. בעמודת detail מופיע קוד הפעולה כ-74 (זה קוד IRP). (בינתיים חיפושי הגוגל שלי עוד לא סיפקו לי תשובה מהי פעולה מיסתורית זו...)כיצד אני מאתר את הפקודה שמפעילה את כל השורות האלו?
ניתן לראות בעמודה PID שכולם על ידי אותה תהליך (מזהה תהליך 1932). שם התהליך svchost.exe.
מכיון ש-svchost הוא מארח השירותים, לכן נצטרך לבדוק איזה שירות התהליך מארחת.
אפשר לגלות מידע זה על ידי עיון בשורת הפקודה, בתפריט Tools > Process Tree.אפשר למצוא את שם השירות גם על ידי בדיקת ה-stack.
Prosvc אחראי על פתיחת פרופיל המשתמש בשעת כניסה, אבל זה עדיין לא נותן לנו מספיק מידע,נסתכל ב-stack של הפעולות
אם נפתח את תפריט Tools > Stack Summary נקבל עץ יפה שמראה לנו שכל הפעולות נגרמות על ידי אותו קטע של קוד.
לא תקבל stack יפה עם שמות פונקציות אלא אם כן אתה מגדיר נכון את ה-symbols בתפריט Options > Configure Symbols. אבל לא ניכנס לזה עכשיו...
סימנתי את האיזור המעניין
השירות קורא לפונקציהCreateTempFileForUser
שמהשם ניתן להסיק שמטרתו לוודא שתקיית ה-TEMP של המשתמש קיים (באמת ניתן לראות שכל פעולות מערכת הקבצים בהקלטה הם בתקיית ה-TEMP).
הפונקציה הנ"ל קוראת לפונקציה בשםStorageReserveHelper::SetReserveAreaOnFileTree
.
שהיא קוראת לפונציהRecursiveDirectoryScan
שלפי השם עושה סריקה ריקורסיבית של תקיית ה-TEMP, כאשר על כל קובץ שנמצא הוא עושה פעולה מיסתורית (<unknown>
- קוד 74), וההמשך ידוע... (זה מאט על הכניסה זה מעצבן את @searchnicks זה מסקרן מאוד את וכו' וכו')נשארו לנו 2 תעלומות
- מה זה הפעולה המסתורית 74?
- מה מטרתה של פונקציית
SetReserveAreaOnFileTree
?
ההמשך יבוא בעז"ה...
-
וואו! אני אפילו לא יודע מה להגיד ומה לכתוב....
זה פשוט הימם אותי!אז בא נתעסק בפרטים הטכניים...
ממה שגיליתי בימים האחרונים, כל הפעלה של Backup and Sync בכניסת המשתמש, יוצרת רשימה של קבצים בתיקיית temp בתוך 3 תיקיות (וזה בסדר, ויש לכל אחד).
כל הפעלה נוספת, יוצר שוב 3 תיקיות חדשות עם הקבצים הנל נוסף על הקיים, מה שנראה באג בפני עצמו, שכן התיקיות הקודמות אמורות להימחק בכיבוי.אבל מה שקורה כאן, שבעת הפעלת ווינדוס, פקודה כלשהיא שהיא מן הסתם
RecursiveDirectoryScan
סורקת את כל תיקיית temp ללא קשר מה יש בפנים, ומכיוון שכל כניסת משתמש יוצרת 3 תיקיות עם מאות קבצים בכל תיקייה, פועל יוצא מכן שתהליך הסריקה הופכת לארוכה יותר.נשארו לנו 2 תעלומות
אז מסתבר שבנוסף שצריך לברר למה יש פעולת סריקה, צריך להבין למה אין תיקון לבאג הזה בתוכנת הסינכרון.
בחיפוש גוגל מצאתי את הקישורים הבאים, ללא מידע על תיקון.
א
ב
ג@yossiz אמר במסך שחור למשך חצי דקה בעת עליית ווינדוס:
תודה, זה הרבה יותר שימושי מקובץ אקסל. (לא עשית סינון על WriteFile, אני לא יודע בדיוק איזה סינון עשית...
עשיתי סינון על כל השורות שמכילים את המחרוזת הבאה
AppData\Local\Temp
ההמשך יבוא בעז"ה...
לפי מה שכתוב כאן, כדי שזה יימחק אוטומטי, יש לבצע יציאה מסודרת משורת המשימות וכך התיקיות נמחקים, מה שלא קורה אם מכבים המחשב בזמן שזה עדיין פועל, וזה באג ידוע לגוגל.
פיתרון זמני שחשבתי על כך ומצאתי בגוגל, הוא קובץ שמוחק אוטומטית כל הקבצים בתיקיה שגילם מעל יום
forfiles /p C:\Users\USER\AppData\Local\Temp /d -1 /s /c "cmd /c del @path /q /f /a"
-
@searchnicks
מה הפלט של פקודה זו (פתח את CMD כמנהל):fsutil storageReserve query c:
-
@yossiz בבקשה
אשמח להחכים...
עריכה: קראתי פה..