Πώς να διορθώσετε τα σφάλματα χρόνου εκτέλεσης των Windows Visual C ++

Πώς να διορθώσετε τα σφάλματα χρόνου εκτέλεσης των Windows Visual C ++

Οι κοινόχρηστες βιβλιοθήκες στα Windows καθιστούν τον προγραμματισμό πολύ πιο αποτελεσματικό για τον προγραμματιστή που δεν χρειάζεται να επανεφεύρει τον τροχό κάθε φορά που χρειάζεται να εκτελέσει μια κοινή εργασία. Επίσης, διευκολύνουν τη σύνδεση οπών ασφαλείας στον κοινόχρηστο κώδικα όταν εντοπιστούν, καθώς πρέπει να επιδιορθωθεί σε λιγότερα μέρη και δεν απαιτεί την επανασυγκρότηση κάθε εφαρμογής.





Παρά τις θετικές αυτές πλευρές, μπορούν να θέσουν τα δικά τους προβλήματα όταν προσπαθούν να αντιμετωπίσουν τη βασική αιτία των μηνυμάτων σφάλματος που μπορεί να δημιουργήσουν.





Ερώτηση αναγνώστη μας:

Πώς μπορώ να διορθώσω ένα πρόβλημα Windows Vista 32-bit C: Windows explorer.exe σε ένα Dell Inspiron 530;





Αφού κάνετε κλικ στο κουμπί OK στο παράθυρο διαλόγου που εμφανίζεται στο στιγμιότυπο οθόνης, η οθόνη θα μαυρίσει και θα επιστρέψει στην κανονική λειτουργία, αλλά δεν θα μου επιτρέψει να έχω πρόσβαση στη μονάδα C, D και, μερικές φορές, στη μονάδα E όταν προσπαθώ να έχω πρόσβαση σε αυτά από τον Υπολογιστή μου.

Τρέξιμο sfc /scannow δεν βρίσκει κανένα λάθος. Κατέβασα ενημερώσεις τόσο από τους ιστότοπους της Dell όσο και της Microsoft προσπαθώντας να διορθώσω αυτό το πρόβλημα. Έχω επίσης εγκαταστήσει το Microsoft Visual C ++ 2010 Redistributable Package (x86). Ο υπολογιστής είναι πλήρως ενημερωμένος σύμφωνα με το Windows Update.



Η απάντηση του Bruce:

Σημείωση: Οι συζητήσεις σχετικά με την Εξερεύνηση των Windows στα Windows 7 και παλαιότερες εκδόσεις ισχύουν επίσης για την Εξερεύνηση αρχείων στα Windows 8 και νεότερες εκδόσεις. Εάν υπάρχει σημαντική διαφορά μεταξύ τους, θα αναφέρεται ρητά.

Το κέλυφος των Windows

Windows Explorer είναι το κέλυφος και εκτελείται ως διαδικασία explorer.exe όπως φαίνεται στο Task Manager ή στο Sysinternals 'Process Explorer. Όπως πολλά άλλα προγράμματα των Windows, όλες οι λειτουργίες που παρέχονται από το κέλυφος δεν είναι ενσωματωμένες σε αυτό το εκτελέσιμο αρχείο. Υπάρχουν δεκάδες άλλα αρχεία EXE και DLL που χρησιμοποιούνται για την υλοποίηση φύλλων ιδιοτήτων, χειριστές ιδιοτήτων, χειριστές προεπισκόπησης, μενού περιβάλλοντος και πολλά άλλα στοιχεία που χρησιμοποιείτε στην Εξερεύνηση των Windows κάθε μέρα.





Εκτεινόμενο κέλυφος

Οι επεκτάσεις Shell επιτρέπουν στους προγραμματιστές να προσθέτουν εύκολα λειτουργικότητα στην Εξερεύνηση των Windows γράφοντας ένα DLL για την εκτέλεση της εργασίας και καταχωρίζοντας το DLL στο λειτουργικό σύστημα, έτσι ώστε ο Explorer να γνωρίζει πού να βρει τον κώδικα για να ολοκληρώσει την εργασία. Για παράδειγμα, 7-φερμουάρ προσθέτει ένα υπομενού στο τυπικό μενού περιβάλλοντος, δίνοντας γρήγορη πρόσβαση σε εργασίες διαχείρισης αρχείων, ο σκληρός δίσκος Sentinel προσθέτει επικαλύψεις εικονιδίων στα τυπικά εικονίδια της μονάδας δίσκου, ώστε να μπορείτε να δείτε την κατάσταση της υγείας της μονάδας με μια ματιά και HashTab προσθέτει ένα νέο φύλλο ιδιοτήτων, για να υπολογίσει και να εμφανίσει κατακερματισμούς του επιλεγμένου αρχείου.

Πολλές από αυτές τις επεκτάσεις κελύφους υλοποιούνται ως διακομιστές σε εξέλιξη Component Object Model (COM). Αυτό σημαίνει ότι όταν μια διεργασία, στην περίπτωση αυτή η Εξερεύνηση των Windows, χρησιμοποιεί την επέκταση, δεν θα εμφανίζεται στη Διαχείριση εργασιών ή στην Εξερεύνηση διαδικασίας ως ξεχωριστή διαδικασία που εκτελείται με το δικό της αναγνωριστικό διεργασίας (PID). Αντ 'αυτού, εκτελείται μέσα στη διαδικασία κλήσης explorer.exe.





Προεπιλεγμένη διαδικασία μεμονωμένων περιστατικών

Η Εξερεύνηση των Windows είναι γραμμένη για να μπορεί να εκτελείται ως δύο ξεχωριστές διαδικασίες, αλλά - στην προεπιλεγμένη διαμόρφωσή της - θα εκτελεί μόνο μία παρουσία. Όταν εκτελείται για πρώτη φορά ως μέρος της διαδικασίας εκκίνησης, δημιουργεί το περιβάλλον επιφάνειας εργασίας των Windows. Η εκτέλεσή του δημιουργεί ξανά ένα νέο νήμα στην υπάρχουσα διαδικασία, το οποίο εμφανίζει το οικείο παράθυρο διαχείρισης αρχείων, αντί να ξεκινήσει μια νέα διαδικασία.

Αυτή η συμπεριφορά επιτρέπει μειωμένο αποτύπωμα μνήμης, αλλά μπορεί επίσης να φέρει τη δική της μικρή συστροφή κατά την αντιμετώπιση προβλημάτων. Ένα κρίσιμο σφάλμα ή μια μη χειρισμένη εξαίρεση στον κώδικα που εκτελείται στη διαδικασία explorer.exe, συμπεριλαμβανομένων των διακομιστών κατά τη διαδικασία που παρέχονται από DLL, θα προκαλέσει την πλήρη μείωση του περιβάλλοντος επιφάνειας εργασίας.

Στις περισσότερες περιπτώσεις, η διαδικασία της επιφάνειας εργασίας θα επανεκκινηθεί αυτόματα. Εάν δεν κάνει επανεκκίνηση, θα πρέπει να μπορείτε να χρησιμοποιήσετε το Ctrl-Shift-Esc για να εμφανίσετε τη Διαχείριση εργασιών. Από εκεί, πήγαινε στο Αρχείο> Νέα εργασία (Εκτέλεση…)> τύπος explorer.exe> ​​ΟΚ για επανεκκίνηση της διαδικασίας.

Αυτό μπορεί να αποφευχθεί με μια απλή αλλαγή. Ανοιξε Εξερεύνηση των Windows> Οργάνωση> Φάκελος και επιλογές αναζήτησης στα Vista/7. Για Windows 8 και νεότερες εκδόσεις, ανοίξτε Εξερεύνηση αρχείων> Προβολή> Επιλογές> Αλλαγή φακέλου και επιλογών αναζήτησης Το Επίλεξε το Καρτέλα Προβολή και ελέγξτε Εκκινήστε παράθυρα φακέλων σε ξεχωριστή διαδικασία Το

Σημειωματάριο ++ σύγκριση 2 αρχείων

Η αλλαγή αυτής της ρύθμισης απομονώνει τη διαδικασία της επιφάνειας εργασίας σας από όλα τα άλλα παράθυρα του Windows Explorer που έχετε ανοίξει. Εάν κάποιο από αυτά τα παράθυρα του Explorer καταρρεύσει, η επιφάνεια εργασίας σας θα παραμείνει αλώβητη.

Microsoft Visual C ++ Runtime Library (CRT)

Η Microsoft Visual C ++ Runtime Library παρέχει ρουτίνες για τον προγραμματισμό των Windows που αυτοματοποιούν πολλές εργασίες, όπως είσοδο/έξοδο, χειρισμό αρχείων, κατανομή μνήμης, κλήσεις συστήματος και πολλές άλλες.

Κάθε εγκατάσταση των Windows θα έχει τουλάχιστον δύο διαφορετικές εκδόσεις του CRT εγκατεστημένες. Ένα πρόσφατα κατασκευασμένο μηχάνημα Vista SP2 μέσω Windows 10 θα έχει και την έκδοση 8.0 και 9.0 (VC 2005 και VC 2008, αντίστοιχα). Όταν εγκαθίσταται πρόσθετο λογισμικό, ενδέχεται επίσης να περιλαμβάνει πιο πρόσφατες εκδόσεις των χρόνων εκτέλεσης, ανάλογα με την έκδοση του Visual C ++ που χρησιμοποιήθηκε για τη δημιουργία του προγράμματος ή οποιουδήποτε από τα συστατικά του.

Σφάλματα χρόνου εκτέλεσης

Όταν προκύψει σφάλμα ή εξαίρεση σε ένα κομμάτι κώδικα, ιδανικά θα αντιμετωπιστεί το συντομότερο δυνατό στην τρέχουσα διαδικασία εκτέλεσης και είτε θα διορθωθεί είτε θα επιτρέψει μια χαριτωμένη αποτυχία. Εάν το σφάλμα δεν αντιμετωπιστεί τοπικά, μεταφέρεται στον κώδικα που κάλεσε τον τρέχοντα κώδικα εκτέλεσης και η διαδικασία συνεχίζεται μέχρι να αντιμετωπιστεί η εξαίρεση. Εάν ολοκληρώσει την εκτέλεσή του στην κορυφή της αλυσίδας και δεν χειριστεί, θα δημιουργήσει σφάλμα χρόνου εκτέλεσης όπως φαίνεται παραπάνω.

Όταν ο χρήστης κάνει κλικ στο κουμπί OK, η διαδικασία θα τερματιστεί. Εάν το πρόγραμμα έχει καθορισμένη συμπεριφορά αποτυχίας, όπως κρίσιμες υπηρεσίες, ή η κατάσταση εκτέλεσης του παρακολουθείται από άλλη διαδικασία, ενδέχεται να ανανεωθεί αυτόματα. Αυτό συμβαίνει σε αυτήν την περίπτωση. Η οθόνη σβήνει όταν τερματιστεί η διαδικασία explorer.exe και, στη συνέχεια, η επιφάνεια εργασίας επιστρέφει όταν επανεκκινηθεί η διαδικασία explorer.exe.

Αν και το παραπάνω μήνυμα σφάλματος δείχνει σαφώς ότι προήλθε από τη διαδικασία explorer.exe, δεν είναι πιθανό να είναι πρόβλημα με το ίδιο το explorer.exe. Είναι πολύ πιο πιθανό ότι ο ένοχος βρίσκεται αλλού, όπως μια επέκταση τρίτου μέρους που χρησιμοποιείται από τον Explorer.

Άλλες σκέψεις

Με την περιγραφή του ζητήματος από τον αναγνώστη μας παραπάνω, υπάρχουν μερικά επιπλέον στοιχεία που πρέπει να λάβουμε υπόψη:

  • Τη στιγμή της συντριβής, ο Explorer προσπαθούσε, αλλά δεν μπορούσε, να συμπληρώσει την προβολή λίστας.
  • Η αδυναμία πρόσβασης σε μονάδες δίσκου μετά την αναπαραγωγή της επιφάνειας εργασίας, μπορεί να υποδηλώνει ότι μια άλλη διαδικασία έχει κλειδωμένη μία ή περισσότερες από αυτές τις συσκευές, εμποδίζοντας έτσι την πρόσβαση από τη νέα διαδικασία explorer.exe.
  • Τρέξιμο sfc /scannow και παίρνοντας έναν καθαρό λογαριασμό υγείας, ρίχνει τους πόρους που προστατεύονται από τα Windows στο κάτω μέρος της λίστας προς εξέταση. Άλλες αιτίες είναι πολύ πιο πιθανές.

Οι διορθώσεις είναι μέσα

Στη συγκεκριμένη περίπτωση, υπάρχουν τρεις τομείς στους οποίους θα έψαχνα μια λύση. Το πρώτο περιλαμβάνει την υπηρεσία αναζήτησης των Windows, το δεύτερο περιλαμβάνει τη διερεύνηση των επεκτάσεων κελύφους και το τελευταίο θα ήταν οι ίδιοι οι αναδιανεμητέοι VC ++.

Επειδή το αρχικό στιγμιότυπο οθόνης δείχνει τη συντριβή που συμβαίνει όταν ο Explorer προσπαθεί να συμπληρώσει την προβολή λίστας, είναι πιθανό η υπηρεσία αναζήτησης των Windows να αποκλείει την πρόσβαση στους απαιτούμενους πόρους. Έχω δει αυτό να συμβαίνει όταν η υπηρεσία διακόπτεται και δεν έχει τις σωστές παραμέτρους επανεκκίνησης.

Τύπος Win+R> τύπος services.msc> ΟΚ για να ξεκινήσετε την κονσόλα διαχείρισης με τη μονάδα υπηρεσιών. Κάντε κύλιση προς τα κάτω στην Αναζήτηση των Windows και κάντε διπλό κλικ στην καταχώρηση για να ανοίξετε το παράθυρο διαλόγου Ιδιότητες. Βεβαιωθείτε ότι οι ρυθμίσεις στην καρτέλα Ανάκτηση ταιριάζουν με την παρακάτω εικόνα.

Το πιο συνηθισμένο πρόβλημα είναι η ρύθμιση 'Επανεκκίνηση της υπηρεσίας μετά από:'. Αυτό το σφάλμα εμφανίζεται συχνά όταν αυτή η ρύθμιση δεν είναι μηδενική.

Προβληματικές επεκτάσεις Shell

Κατεβάστε ShellExView του Nirsoft για την αρχιτεκτονική του συστήματός σας (x86 ή x64), εγκαταστήστε και εκτελέστε το. Θα χρειαστεί λίγος χρόνος για να εξεταστεί το σύστημα και να συμπληρωθεί ο πίνακας με δεδομένα. Μεταβείτε στη στήλη CLSID Modified Time και κάντε κλικ στην κεφαλίδα για ταξινόμηση σε αυτό το πεδίο. Εάν θέλετε να εξαιρέσετε τις ενότητες που παρέχονται από τη Microsoft, μπορείτε να μεταβείτε στη διεύθυνση Επιλογές> Απόκρυψη όλων των επεκτάσεων της Microsoft Το Για όσους χρησιμοποιούν έκδοση 64-bit των Windows, μπορεί επίσης να θέλετε να εμφανίσετε τις επεκτάσεις 32-bit στο σύστημα μεταβαίνοντας στο Επιλογές> Εμφάνιση επεκτάσεων Shell 32-bit Το

Αναζητήστε επεκτάσεις που προστέθηκαν λίγο πριν αρχίσουν τα συμπτώματα. Επιλέξτε ένα ή περισσότερα και πατήστε F7 ή πηγαίνετε στο Αρχείο> Απενεργοποίηση επιλεγμένων στοιχείων , ή κάντε κλικ στο κόκκινο εικονίδιο LED στη γραμμή εργαλείων. Στην ιδανική περίπτωση, αυτό πρέπει να γίνεται ένα κάθε φορά.

Ελέγξτε αν τα συμπτώματα επιμένουν. Εάν συμβεί αυτό, μπορείτε να ενεργοποιήσετε ξανά τις προεκτάσεις που έχουν απενεργοποιηθεί προηγουμένως χρησιμοποιώντας F8 , Αρχείο> Ενεργοποίηση επιλεγμένων στοιχείων ή το πράσινο εικονίδιο της γραμμής εργαλείων LED. Από εδώ, απενεργοποιήστε μια διαφορετική επέκταση και επαναλάβετε τη διαδικασία δοκιμής μέχρι να βρείτε αυτήν που προκαλεί το πρόβλημα.

Επιδιόρθωση/επανεγκατάσταση αναδιανεμητέων VC ++

Χρησιμοποιώ αυτό ως έσχατη λύση, αν μόνο ένα πρόγραμμα βγάζει λάθη. Εάν έχετε πολλά προγράμματα που αντιμετωπίζουν προβλήματα με σφάλματα χρόνου εκτέλεσης VC ++, ίσως θελήσετε να το δοκιμάσετε πρώτα.

Όταν κοιτάζω τα εγκατεστημένα προγράμματα στο σύστημά μου ( Πίνακας ελέγχου> Προγράμματα και δυνατότητες ), εμφανίζει κάθε έκδοση των πακέτων αναδιανομής (και μερικές από τις ενημερώσεις τους) που κυμαίνονται από την έκδοση 8 έως την έκδοση 12 (VC ++ 2005 έως VC ++ 2013). Τα έχω εγκαταστήσει λόγω των εργαλείων προγραμματισμού της Microsoft που χρησιμοποιώ. Οι περισσότεροι χρήστες δεν θα τα έχουν όλα αυτά.

Μπορείτε να βρείτε το τελευταίες λήψεις για υποστηριζόμενες εκδόσεις του Visual C ++ από τη Microsoft. Για τους σκοπούς μας εδώ, δεν χρειάζεται παρά να σας απασχολούν αυτά που χαρακτηρίζονται ως «αναδιανεμητέα» πακέτα. Οι σύνδεσμοι που ταξινομούνται ως πακέτα υπηρεσιών είναι για τα εργαλεία προγραμματισμού, όχι μόνο για τους χρόνους εκτέλεσης. Θα χρειαστείτε μόνο αυτά που εμφανίζονται αυτήν τη στιγμή στα εγκατεστημένα προγράμματα στο σύστημά σας. Η εγκατάσταση άλλων εκδόσεων δεν θα βοηθήσει σε αυτήν την περίπτωση. Οι χρήστες λειτουργικών συστημάτων 64-bit μπορεί να χρειάζονται τόσο τις εκδόσεις x86 όσο και τις x64 του CRT.

Το Windows Update ελέγχει εάν ο υπολογιστής σας έχει εγκαταστήσει τις πιο πρόσφατες ενημερώσεις για αυτά τα πακέτα, αλλά δεν ελέγχει για να βεβαιωθεί ότι είναι σωστά εγκατεστημένο και ότι δεν έχει χαλάσει. Οι εγκαταστάτες μπορούν να ελέγξουν για να διασφαλίσουν ότι όλα τα αρχεία χρόνου εκτέλεσης είναι τα κατάλληλα και ότι όλες οι καταχωρίσεις μητρώου είναι σωστές.

Αφού κατεβάσετε τα κατάλληλα προγράμματα εγκατάστασης, εκτελέστε τα στο σύστημα. Οι εκδόσεις του 2005 θα σας ζητήσουν να αποδεχτείτε μια άδεια χρήσης πριν από την επανεγκατάσταση του πακέτου. Όλες οι άλλες έχουν ένα GUI που θα σας ρωτήσει εάν θέλετε να επιδιορθώσετε ή να απεγκαταστήσετε την υπάρχουσα εγκατάσταση. Στις περισσότερες περιπτώσεις, μια επισκευή θα διορθώσει τυχόν προβλήματα.

Εάν θέλετε να δοκιμάσετε την πιο ακραία μέθοδο, μπορείτε να απεγκαταστήσετε τους χρόνους εκτέλεσης, να επανεκκινήσετε το μηχάνημα και, στη συνέχεια, να τους εγκαταστήσετε ξανά. Δεν συνιστώ αυτήν τη μέθοδο με τους χρόνους εκτέλεσης 2005 και 2008. Χωρίς αυτά, τα Windows θα δημιουργήσουν πολλά σφάλματα και πολλές λειτουργίες δεν θα είναι εκεί για εσάς κατά την επανεκκίνηση.

συμπέρασμα

Με λίγη παρατήρηση, ένα άγγιγμα δοκιμής και σφάλματος και κάποια κατανόηση του τρόπου με τον οποίο δημιουργούνται σφάλματα από τους χρόνους εκτέλεσης στο σύστημα, τα ζητήματα λογισμικού μπορούν να βρεθούν και να επιλυθούν χωρίς να καταφύγουν σε περίπλοκα εργαλεία εντοπισμού σφαλμάτων και αρχεία καταγραφής.

Έχετε αντιμετωπίσει σφάλματα χρόνου εκτέλεσης στο σύστημά σας; Τι απαιτείται για την επίλυσή τους; Ενημερώστε με στα παρακάτω σχόλια.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Να γιατί το FBI εξέδωσε προειδοποίηση για ransomware Hive

Το FBI εξέδωσε προειδοποίηση για ένα ιδιαίτερα δυσάρεστο είδος ransomware. Να γιατί πρέπει να είστε ιδιαίτερα επιφυλακτικοί με το ransomware της Hive.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Windows
  • Η τεχνολογία εξηγείται
  • Ρωτήστε τους ειδικούς
  • Windows Explorer
  • Windows
  • File Explorer
  • Αναζήτηση Windows
  • Αντιμετώπιση προβλημάτων
Σχετικά με τον Συγγραφέα Μπρους Έπερ(Δημοσιεύθηκαν 13 άρθρα)

Ο Μπρους έπαιζε με τα ηλεκτρονικά από τη δεκαετία του '70, τους υπολογιστές από τις αρχές της δεκαετίας του '80 και απαντούσε με ακρίβεια ερωτήσεις σχετικά με την τεχνολογία που δεν είχε χρησιμοποιήσει ούτε είχε δει όλη την ώρα. Επίσης, ενοχλεί τον εαυτό του προσπαθώντας να παίξει κιθάρα.

Περισσότερα από τον Bruce Epper

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή