כיצד לתקן שגיאות זמן ריצה של Windows Visual C ++

כיצד לתקן שגיאות זמן ריצה של Windows Visual C ++

ספריות משותפות ב- Windows הופכות את התכנות ליעילה בהרבה עבור המתכנת שאינו צריך להמציא את הגלגל בכל פעם שהוא צריך לבצע משימה משותפת. הם גם מקלים על חיבור חורי אבטחה לקוד המשותף כאשר הם מוצאים כיוון שצריך לתקן אותו בפחות מקומות ואינו דורש כל יישום מחדש.





למרות ההיבטים החיוביים הללו, הם יכולים להוות בעיות משלהם בעת ניסיון לפתור את הסיבה השורשית להודעות השגיאה שהם עשויים ליצור.





שאלת הקורא שלנו:

כיצד ניתן לתקן בעיה של Windows Vista 32 סיביות C: Windows explorer.exe ב- Dell Inspiron 530?





לאחר לחיצה על הלחצן אישור בתיבת הדו -שיח המוצגת בצילום המסך, המסך יכהה ויחזור להפעלה רגילה, אך הוא לא יאפשר לי לגשת לכונן C, D ולפעמים לכונן E כאשר מנסים לגשת אליהם. מהמחשב שלי.

רץ sfc /scannow לא מוצא שגיאות. הורדתי עדכונים הן מהאתרים של Dell והן של מיקרוסופט בניסיון לתקן בעיה זו. התקנתי גם את חבילת ההפצה הניתנת להפצה מחדש של Microsoft Visual C ++ 2010 (x86). המחשב מעודכן לחלוטין על פי Windows Update.



התשובה של ברוס:

הערה: דיונים אודות סייר Windows ב- Windows 7 וגרסאות קודמות חלים גם על סייר הקבצים ב- Windows 8 וגירסאות מתקדמות יותר. אם יש הבדל בולט ביניהם, זה יצוין במפורש.

מעטפת Windows

סייר חלונות הוא המעטפת ופועלת כתהליך explorer.exe כפי שניתן לראות במנהל המשימות או סייר התהליכים של Sysinternals. כמו תוכניות רבות אחרות של Windows, כל הפונקציונליות שמספקת הקליפה אינה משולבת בקובץ ההפעלה היחיד. ישנם עשרות קבצי EXE ו- DLL אחרים המשמשים ליישום גליונות נכסים, מטפלים בנכסים, מטפלי תצוגה מקדימה, תפריטי הקשר ורכיבים רבים אחרים שבהם אתה משתמש בסייר Windows בכל יום.





מעטפת ניתנת להרחבה

הרחבות מעטפת מאפשרות למתכנתים להוסיף פונקציונליות בקלות לסייר Windows על ידי כתיבת DLL לביצוע המשימה ורישום ה- DLL במערכת ההפעלה, כך שאקספלורר יודע היכן למצוא את הקוד לביצוע המשימה. לדוגמה, 7-זיפ מוסיף תפריט משנה לתפריט ההקשר הסטנדרטי, המעניק גישה מהירה למטלות טיפול בארכיון, סנטינל הדיסק הקשיח מוסיף שכבות-על של אייקונים לסמלי הכונן הסטנדרטיים, כך שתוכל לראות את מצב בריאות הכונן במבט חטוף, ו HashTab מוסיף גיליון מאפיינים חדש, לחישוב והצגת hash של הקובץ שנבחר.

רבים מתוספי מעטפת אלה מיושמים כשרתי מודל אובייקט רכיבים (COM) בתהליך. המשמעות היא שכאשר תהליך, במקרה זה סייר Windows, משתמש בתוסף, הוא לא יופיע במנהל המשימות או סייר התהליכים כתהליך הפעלה נפרד עם מזהה תהליכים משלו (PID). במקום זאת, הוא מתבצע בתוך התהליך המתקשר explorer.exe.





תהליך ברירת מחדל של מופע יחיד

סייר Windows כתוב כך שהוא יכול לפעול כשני תהליכים נפרדים, אך - בתצורת ברירת המחדל שלו - הוא יפעיל מופע יחיד בלבד. כאשר הוא מבוצע לראשונה כחלק מתהליך ההפעלה, הוא יוצר את סביבת שולחן העבודה של Windows. ביצועו מחדש יוצר פתיל חדש בתהליך הקיים, המציג את חלון ניהול הקבצים המוכר, במקום להתחיל תהליך חדש.

התנהגות זו מאפשרת טביעת רגל זיכרון מופחתת, אך יכולה להביא גם טוויסט קטן משלה בעת פתרון בעיות. שגיאה קריטית או חריג לא מטופל בקוד המבוצע בתהליך explorer.exe, כולל שרתים בתהליך המסופקים על ידי קובצי DLL, יגרום לכל סביבת שולחן העבודה לרדת איתה.

ברוב המקרים תהליך שולחן העבודה יופעל מחדש באופן אוטומטי. אם הוא אינו מופעל מחדש, אתה עדיין אמור להיות מסוגל להשתמש ב- Ctrl-Shift-Esc כדי להציג את מנהל המשימות. משם לך אל קובץ> משימה חדשה (הפעלה ...)> סוּג explorer.exe> ​​אישור כדי להפעיל מחדש את התהליך.

ניתן להימנע מכך באמצעות שינוי פשוט. לִפְתוֹחַ סייר Windows> ארגון> תיקייה ואפשרויות חיפוש ב- Vista/7. עבור Windows 8 ואילך, פתח סייר הקבצים> תצוגה> אפשרויות> שנה תיקיה ואפשרויות חיפוש . בחר את הכרטיסייה תצוגה ולבדוק הפעל חלונות תיקיות בתהליך נפרד .

דברים מגניבים לעשות עם קודי

שינוי הגדרה זו מבודד את תהליך שולחן העבודה שלך מכל שאר חלונות סייר Windows שפתחת. אם אחד מאותם חלונות אקספלורר קורס, שולחן העבודה שלך יישאר ללא פגע.

ספריית Runtime של Microsoft Visual C ++ (CRT)

ספריית Runtime של Microsoft Visual C ++ מספקת שגרות לתכנות של Windows המפעילות משימות רבות, כגון קלט/פלט, מניפולציה של קבצים, הקצאת זיכרון, שיחות מערכת ועוד רבות אחרות.

בכל התקנת Windows יותקנו לפחות שתי גרסאות שונות של ה- CRT. מחשב Vista SP2 שנבנה לאחרונה באמצעות Windows 10 יהיה בעל גרסה 8.0 ו -9.0 (VC 2005 ו- VC 2008, בהתאמה). כאשר מותקנת תוכנה נוספת, היא עשויה לכלול גם גירסאות עדכניות יותר של זמן הריצה, בהתאם לגירסה של Visual C ++ ששימשה ליצירת התוכנית או כל אחד ממרכיביה.

שגיאות זמן ריצה

כאשר נתקלת בשגיאה או חריגה בחתיכת קוד, באופן אידיאלי היא תטופל בהקדם האפשרי בהליך המבוצע כעת, או שתתקן או תאפשר כישלון חינני. אם השגיאה אינה מטופלת באופן מקומי, היא מועברת לקוד שנקרא הקוד המבוצע כעת, והתהליך נמשך עד לטיפול בחריגה. אם הוא משלים את הריצה שלו לחלק העליון של השרשרת ועדיין לא מטפלים בו, היא תיצור שגיאת זמן ריצה כפי שניתן לראות למעלה.

כאשר המשתמש לוחץ על כפתור אישור, התהליך יסתיים. אם לתוכנית יש התנהגות כשל מוגדרת, כגון שירותים קריטיים, או שמצב ההפעלה שלה מנוטר על ידי תהליך אחר, ייתכן שהיא תינתן מחדש באופן אוטומטי. זה מה שקורה במקרה זה. המסך מתכהה כאשר תהליך explorer.exe מסתיים, ואז שולחן העבודה חוזר כאשר תהליך explorer.exe מופעל מחדש.

למרות שהודעת השגיאה שלמעלה מצביעה בבירור שהיא באה מתהליך explorer.exe, לא סביר שתהיה בעיה ב- explorer.exe עצמה. סביר יותר שהאשם טמון במקומות אחרים, כגון הרחבה של צד שלישי המשמשת את אקספלורר.

שיקולים אחרים

עם תיאור הקורא של הנושא לעיל, ישנם מספר פריטים נוספים שעלינו לקחת בחשבון:

  • בזמן ההתרסקות, אקספלורר ניסה, אך לא הצליח, לאכלס את תצוגת הרשימה.
  • חוסר היכולת לגשת לכוננים לאחר שחזור המחשב השולחני, עשוי להצביע על תהליך אחר שבו אחד או יותר מהמכשירים האלה נעולים, ובכך למנוע גישה מהתהליך explorer.exe החדש שנוצר.
  • רץ sfc /scannow ומקבל כתב בריאות נקי, מוריד את המשאבים המוגנים של Windows לתחתית הרשימה לבחינה. סיבות אחרות הן הרבה יותר סבירות.

התיקונים נכנסים

במקרה הספציפי הזה, ישנם שלושה תחומים בהם הייתי מחפש פתרון. הראשון כולל את שירות חיפוש Windows, השני כולל חקירת הרחבות מעטפת, והאחרון יהיה הפצה המחודשת של VC ++ עצמן.

מכיוון שצילום המסך המקורי מציג את התרסקות המתרחשת כאשר סייר מנסה לאכלס את תצוגת הרשימה, ייתכן ששירות חיפוש Windows חוסם את הגישה למשאבים הנדרשים. ראיתי את זה קורה כשהשרות קורס ואין לו את פרמטרי ההפעלה הנכונים.

ללחוץ Win+R> סוּג services.msc> אישור כדי להפעיל את מסוף הניהול עם מודול השירותים. גלול מטה לחיפוש Windows ולחץ פעמיים על הערך כדי לפתוח את תיבת הדו-שיח מאפיינים. ודא שההגדרות בכרטיסייה שחזור תואמות את התמונה למטה.

הבעיה הנפוצה ביותר היא הגדרת 'הפעל מחדש שירות לאחר:'. שגיאה זו מתרחשת לעתים קרובות כאשר הגדרה זו אינה אפס.

הרחבות מעטפת בעייתיות

הורד ShellExView של Nirsoft עבור ארכיטקטורת המערכת שלך (x86 או x64), התקן והפעל אותה. ייקח קצת זמן לבחון את המערכת ולמלא את הטבלה בנתונים. גלול אל עמודת CLSID Modified Time ולחץ על הכותרת למיון בשדה זה. אם ברצונך לא לכלול את המודולים המסופקים על ידי מיקרוסופט, תוכל לעבור אל אפשרויות> הסתר את כל התוספים של Microsoft . למי שמשתמש בגרסת 64 סיביות של Windows, ייתכן שתרצה גם להציג את הסיומות של 32 סיביות במערכת על ידי מעבר אל אפשרויות> הצג הרחבות מעטפת 32 סיביות .

חפש הרחבות שנוספו ממש לפני תחילת התסמינים. בחר אחד או יותר ולחץ F7 או ללכת אל קובץ> השבת פריטים נבחרים , או לחץ על סמל ה- LED האדום בסרגל הכלים. באופן אידיאלי, זה צריך להיעשות אחת בכל פעם.

בדוק אם התסמינים ממשיכים. אם הם עושים זאת, תוכל להפעיל מחדש את התוספים שהושבתו בעבר באמצעות F8 , קובץ> אפשר פריטים נבחרים , או סמל סרגל הכלים הירוק של LED. מכאן, השבת סיומת אחרת וחזור על תהליך הבדיקה עד שתמצא את הגורם לבעיה.

תיקון/התקנה מחדש של VC ++ הפצה מחדש

אני משתמש בתוכנית זו כמוצא אחרון, אם רק תוכנית אחת בועטת שגיאות. אם יש לך מספר תוכניות שיש להן בעיות עם שגיאות זמן ריצה של VC ++, ייתכן שתרצה לנסות זאת תחילה.

כאשר מסתכלים על התוכניות המותקנות במערכת שלי ( לוח הבקרה> תוכניות ותכונות ), היא מציגה כל גרסה של החבילות הניתנות להפצה (וכמה מהעדכונים שלהן) החל מגרסה 8 ועד גרסה 12 (VC ++ 2005 עד VC ++ 2013). התקנתי אותם בגלל כלי התכנות של מיקרוסופט בהם אני משתמש. לרוב המשתמשים לא יהיו כל אלה.

אתה יכול למצוא את ההורדות האחרונות לגרסאות נתמכות של Visual C ++ מבית מיקרוסופט. למטרותינו כאן, עליך לדאוג רק לאלה המתויגים כחבילות 'להפצה'. קישורים המסווגים כחבילות Service נועדו לכלי התכנות, לא רק לזמן הריצה. תזדקק רק לאלה המופיעים כעת בתוכניות המותקנות במערכת שלך. התקנת גרסאות אחרות לא תעזור במקרה זה. משתמשי מערכות הפעלה של 64 סיביות עשויים להזדקק הן לגרסאות x86 והן ל- x64 של ה- CRT.

Windows Update בודק אם במחשב שלך מותקנים העדכונים האחרונים עבור חבילות אלה, אך הוא אינו בודק אם הוא מותקן כראוי ואינו נשבר. המתקינים יכולים לבדוק אם כל קבצי זמן הריצה הם התקינים וכל ערכי הרישום נכונים.

לאחר הורדת המתקינים המתאימים, הפעל אותם במערכת. גרסאות 2005 יבקשו ממך לקבל הסכם רישיון לפני התקנת החבילה מחדש. לכל האחרים יש ממשק משתמש אשר ישאל אותך אם ברצונך לתקן או להסיר את ההתקנה הקיימת. ברוב המקרים, פעולת תיקון תפתור בעיות.

אם אתה רוצה לנסות את השיטה הקיצונית ביותר, תוכל להסיר את התקנת הריצה, לאתחל את המכונה ולאחר מכן להתקין אותן מחדש. אני לא ממליץ על שיטה זו עם זמן הריצה 2005 ו -2008. בלעדיהם, Windows תיצור שגיאות רבות ופונקציונליות רבה לא תהיה שם עבורך בעת אתחול מחדש.

סיכום

עם מעט התבוננות, נגיעה בניסוי וטעייה, והבנה מסוימת כיצד נוצרות טעויות מזמן ריצה במערכת, ניתן למצוא ולפתור בעיות תוכנה מבלי להיעזר בכלים מסובכים לאיתור באגים ולוגים.

נתקלתם בשגיאות זמן ריצה במערכת שלכם? מה נדרש כדי לפתור אותם? יידע אותי בתגובות למטה.

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל הנה הסיבה שה- FBI הוציא אזהרה על תוכנת כופר של כוורת

ה- FBI פרסם אזהרה על זן מגעיל במיוחד של תוכנות כופר. הנה הסיבה שאתה צריך להיזהר במיוחד מתוכנת הכופר של כוורת.

קרא הבא
נושאים קשורים
  • חלונות
  • הסבר על הטכנולוגיה
  • שאל את המומחים
  • סייר חלונות
  • חלונות
  • סייר קבצים
  • חיפוש Windows
  • פתרון תקלות
על הסופר ברוס אפר(13 מאמרים פורסמו)

ברוס שיחק עם האלקטרוניקה מאז שנות ה -70, מחשבים מאז תחילת שנות ה -80, וענה במדוייק על שאלות לגבי טכנולוגיה שהוא לא השתמש בה ולא ראה כל הזמן. הוא גם מעצבן את עצמו בניסיון לנגן בגיטרה.

עוד מאת ברוס אפר

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה