วิธีแก้ไขข้อผิดพลาดรันไทม์ Windows Visual C++

วิธีแก้ไขข้อผิดพลาดรันไทม์ Windows Visual C++

ไลบรารีที่ใช้ร่วมกันใน Windows ทำให้การเขียนโปรแกรมมีประสิทธิภาพมากขึ้นสำหรับโปรแกรมเมอร์ที่ไม่จำเป็นต้องสร้างวงล้อใหม่ทุกครั้งที่ต้องทำงานทั่วไป นอกจากนี้ยังช่วยให้เสียบช่องโหว่ด้านความปลอดภัยในโค้ดที่ใช้ร่วมกันได้ง่ายขึ้นเมื่อพบ เนื่องจากจำเป็นต้องแก้ไขในที่ที่น้อยลง และไม่จำเป็นต้องคอมไพล์ทุกแอปพลิเคชันใหม่





แม้จะมีแง่บวกเหล่านี้ แต่ก็สามารถก่อให้เกิดปัญหาของตนเองได้เมื่อพยายามแก้ไขปัญหาที่ต้นเหตุของข้อความแสดงข้อผิดพลาดที่อาจสร้างขึ้น





คำถามของผู้อ่านของเรา:

ฉันจะแก้ไขปัญหา C:Windowsexplorer.exe ของ Windows Vista 32 บิตบน Dell Inspiron 530 ได้อย่างไร





หลังจากคลิกปุ่มตกลงในกล่องโต้ตอบที่แสดงในภาพหน้าจอ หน้าจอจะดับลงและกลับสู่การทำงานปกติ แต่จะไม่อนุญาตให้ฉันเข้าถึงไดรฟ์ C, D และบางครั้ง ไดรฟ์ E เมื่อพยายามเข้าถึง จากคอมพิวเตอร์ของฉัน

วิ่ง sfc /scannow ไม่พบข้อผิดพลาดใดๆ ฉันดาวน์โหลดการอัปเดตจากทั้งเว็บไซต์ Dell และ Microsoft ที่พยายามแก้ไขปัญหานี้ ฉันได้ติดตั้ง Microsoft Visual C++ 2010 Redistributable Package (x86) แล้ว พีซีได้รับการอัปเดตโดยสมบูรณ์ตาม Windows Update



คำตอบของบรูซ:

หมายเหตุ: การสนทนาเกี่ยวกับ Windows Explorer ใน Windows 7 และเวอร์ชันก่อนหน้าจะมีผลกับ File Explorer ใน Windows 8 และเวอร์ชันที่ใหม่กว่าด้วย หากมีความแตกต่างที่โดดเด่นระหว่างพวกเขา จะมีการระบุไว้อย่างชัดเจน

Windows Shell

Windows Explorer เป็น เชลล์และทำงานเป็นกระบวนการ explorer.exe ดังที่เห็นใน Task Manager หรือ Process Explorer ของ Sysinternals เช่นเดียวกับโปรแกรม Windows อื่น ๆ ฟังก์ชันทั้งหมดที่มีให้โดยเชลล์ไม่ได้รวมอยู่ในไฟล์ปฏิบัติการไฟล์เดียว มีไฟล์ EXE และ DLL อื่นๆ อีกหลายสิบไฟล์ที่ใช้เพื่อติดตั้งแผ่นคุณสมบัติ ตัวจัดการคุณสมบัติ ตัวจัดการแสดงตัวอย่าง เมนูบริบท และองค์ประกอบอื่นๆ มากมายที่คุณใช้ใน Windows Explorer ทุกวัน





เชลล์ขยายได้

ส่วนขยายของเชลล์ช่วยให้โปรแกรมเมอร์เพิ่มฟังก์ชันการทำงานให้กับ Windows Explorer ได้อย่างง่ายดายโดยการเขียน DLL เพื่อทำงานและลงทะเบียน DLL กับระบบปฏิบัติการ ดังนั้น Explorer จึงรู้ว่าจะหาโค้ดเพื่อทำงานให้สำเร็จได้จากที่ใด ตัวอย่างเช่น, 7-Zip เพิ่มเมนูย่อยให้กับเมนูบริบทมาตรฐาน ซึ่งช่วยให้เข้าถึงงานจัดการเก็บถาวรได้อย่างรวดเร็ว Hard Disk Sentinel เพิ่มไอคอนซ้อนทับไปยังไอคอนไดรฟ์มาตรฐาน คุณจึงสามารถดูสถานะความสมบูรณ์ของไดรฟ์ได้อย่างรวดเร็ว และ HashTab เพิ่มแผ่นคุณสมบัติใหม่ เพื่อคำนวณและแสดงแฮชของไฟล์ที่เลือก

ส่วนขยายเชลล์เหล่านี้จำนวนมากถูกนำไปใช้เป็นเซิร์ฟเวอร์ Component Object Model (COM) ในกระบวนการ ซึ่งหมายความว่าเมื่อกระบวนการ ในกรณีนี้คือ Windows Explorer ใช้ส่วนขยายนั้น จะไม่ปรากฏในตัวจัดการงานหรือ Process Explorer เป็นกระบวนการทำงานแยกต่างหากด้วยตัวระบุกระบวนการ (PID) แต่กำลังดำเนินการภายในกระบวนการเรียก explorer.exe





กระบวนการอินสแตนซ์เดียวเริ่มต้น

Windows Explorer ถูกเขียนขึ้นเพื่อให้สามารถทำงานเป็นสองกระบวนการที่แยกจากกัน แต่ในการกำหนดค่าเริ่มต้น จะเรียกใช้อินสแตนซ์เดียวเท่านั้น เมื่อดำเนินการครั้งแรกโดยเป็นส่วนหนึ่งของกระบวนการเริ่มต้น ระบบจะสร้างสภาพแวดล้อมเดสก์ท็อปของ Windows การดำเนินการอีกครั้งจะสร้างเธรดใหม่ในกระบวนการที่มีอยู่ ซึ่งจะแสดงหน้าต่างการจัดการไฟล์ที่คุ้นเคย แทนที่จะเริ่มกระบวนการใหม่

ลักษณะการทำงานนี้ช่วยลดรอยเท้าของหน่วยความจำ แต่ยังสามารถทำให้เกิดการเปลี่ยนแปลงเล็กน้อยเมื่อแก้ไขปัญหา ข้อผิดพลาดร้ายแรงหรือข้อยกเว้นที่ไม่สามารถจัดการได้ในโค้ดที่กำลังดำเนินการในกระบวนการ explorer.exe รวมถึงเซิร์ฟเวอร์ในกระบวนการที่ให้บริการโดย DLL จะทำให้สภาพแวดล้อมเดสก์ท็อปทั้งหมดลดลงด้วย

ในกรณีส่วนใหญ่ กระบวนการเดสก์ท็อปจะเริ่มต้นใหม่โดยอัตโนมัติ ถ้ามันไม่รีสตาร์ท คุณควรจะยังใช้ Ctrl-Shift-Esc เพื่อเรียกตัวจัดการงานขึ้นมาได้ จากนั้นไปที่ ไฟล์ > งานใหม่ (เรียกใช้…) > พิมพ์ explorer.exe > ตกลง เพื่อเริ่มกระบวนการใหม่

นี้สามารถหลีกเลี่ยงได้ด้วยการเปลี่ยนแปลงง่ายๆ เปิด Windows Explorer > จัดระเบียบ > โฟลเดอร์และตัวเลือกการค้นหา ใน Vista/7 สำหรับ Windows 8 และใหม่กว่า ให้เปิด File Explorer > มุมมอง > ตัวเลือก > เปลี่ยนโฟลเดอร์และตัวเลือกการค้นหา . เลือก ดูแท็บ และตรวจสอบ เปิดหน้าต่างโฟลเดอร์ในกระบวนการแยกต่างหาก .

ฉันอัพเกรดหน่วยความจำบน macbook pro ได้ไหม

การเปลี่ยนการตั้งค่านี้จะแยกกระบวนการเดสก์ท็อปของคุณออกจากหน้าต่าง Windows Explorer อื่นๆ ทั้งหมดที่คุณเปิดไว้ หากหน้าต่าง Explorer ใดขัดข้อง เดสก์ท็อปของคุณจะไม่ได้รับบาดเจ็บ

ไลบรารีรันไทม์ Microsoft Visual C++ (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 Search ส่วนที่สองเกี่ยวข้องกับการตรวจสอบส่วนขยายของเชลล์ และสุดท้ายคือ VC++ redistributables เอง

เนื่องจากภาพหน้าจอต้นฉบับแสดงการหยุดทำงานที่เกิดขึ้นเมื่อ Explorer พยายามเติมข้อมูล listview จึงเป็นไปได้ว่าบริการ Windows Search กำลังบล็อกการเข้าถึงทรัพยากรที่จำเป็น ฉันได้เห็นสิ่งนี้เกิดขึ้นเมื่อบริการขัดข้องและไม่มีพารามิเตอร์การรีสตาร์ทที่ถูกต้อง

กด Win+R > พิมพ์ services.msc > ตกลง เพื่อเริ่มคอนโซลการจัดการด้วยโมดูลบริการ เลื่อนลงไปที่ Windows Search และดับเบิลคลิกที่รายการเพื่อเปิดกล่องโต้ตอบ Properties ตรวจสอบให้แน่ใจว่าการตั้งค่าบนแท็บการกู้คืนตรงกับรูปภาพด้านล่าง

ปัญหาที่พบบ่อยที่สุดคือการตั้งค่า 'เริ่มบริการใหม่หลังจาก:' ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อการตั้งค่านี้ไม่ใช่ศูนย์

ส่วนขยายเชลล์ที่มีปัญหา

ดาวน์โหลด ShellExView ของ Nirsoft สำหรับสถาปัตยกรรมระบบของคุณ (x86 หรือ x64) ให้ติดตั้งและเรียกใช้ จะใช้เวลาสักครู่ในการตรวจสอบระบบและกรอกข้อมูลลงในตาราง เลื่อนไปที่คอลัมน์ CLSID Modified Time และคลิกที่ส่วนหัวเพื่อจัดเรียงในช่องนี้ หากคุณต้องการแยกโมดูลที่ Microsoft จัดเตรียมให้ คุณสามารถไปที่ ตัวเลือก > ซ่อน Microsoft Extensions ทั้งหมด . สำหรับผู้ที่ใช้ Windows รุ่น 64 บิต คุณอาจต้องการแสดงส่วนขยาย 32 บิตบนระบบโดยไปที่ ตัวเลือก > แสดงส่วนขยายเชลล์แบบ 32 บิต .

มองหาส่วนขยายที่เพิ่มเข้ามาก่อนอาการจะเริ่มขึ้น เลือกหนึ่งรายการขึ้นไปแล้วกด F7 หรือไปที่ ไฟล์ > ปิดการใช้งานรายการที่เลือก หรือคลิกที่ไอคอน LED สีแดงในแถบเครื่องมือ ตามหลักการแล้วควรทำทีละอย่าง

ทดสอบเพื่อดูว่าอาการยังคงมีอยู่หรือไม่ หากเป็นเช่นนั้น คุณสามารถเปิดใช้งานส่วนขยายที่ปิดใช้งานก่อนหน้านี้อีกครั้งโดยใช้ F8 , ไฟล์ > เปิดใช้งานรายการที่เลือก หรือไอคอนแถบเครื่องมือ LED สีเขียว จากที่นี่ ให้ปิดใช้งานส่วนขยายอื่นและทำซ้ำขั้นตอนการทดสอบจนกว่าคุณจะพบส่วนขยายที่ทำให้เกิดปัญหา

ซ่อมแซม/ติดตั้ง VC++ Redistributables ใหม่

ฉันใช้วิธีนี้เป็นทางเลือกสุดท้าย หากมีเพียงโปรแกรมเดียวที่เริ่มต้นข้อผิดพลาด หากคุณมีหลายโปรแกรมที่มีปัญหากับข้อผิดพลาดรันไทม์ VC++ คุณอาจต้องลองใช้วิธีนี้ก่อน

เมื่อดูโปรแกรมที่ติดตั้งบนระบบของฉัน ( แผงควบคุม > โปรแกรมและคุณสมบัติ ) จะแสดงทุกเวอร์ชันของแพ็คเกจที่แจกจ่ายต่อได้ (และการอัปเดตบางส่วน) ตั้งแต่เวอร์ชัน 8 ถึงเวอร์ชัน 12 (VC++ 2005 ถึง VC++ 2013) ฉันได้ติดตั้งไว้เนื่องจากเครื่องมือการเขียนโปรแกรมของ Microsoft ที่ฉันใช้ ผู้ใช้ส่วนใหญ่จะไม่มีสิ่งเหล่านี้ทั้งหมด

คุณสามารถค้นหา การดาวน์โหลดล่าสุดสำหรับ Visual C++ . เวอร์ชันที่รองรับ จากไมโครซอฟต์ เพื่อจุดประสงค์ของเราในที่นี้ คุณเพียงแค่ต้องคำนึงถึงสิ่งที่ระบุว่าเป็นแพ็คเกจ 'แจกจ่ายต่อได้' เท่านั้น ลิงค์ที่ถูกจัดประเภทเป็นเซอร์วิสแพ็คมีไว้สำหรับเครื่องมือการเขียนโปรแกรม ไม่ใช่แค่รันไทม์เท่านั้น คุณจะต้องใช้เฉพาะรายการที่อยู่ในโปรแกรมที่ติดตั้งอยู่ในระบบของคุณเท่านั้น การติดตั้งเวอร์ชันอื่นจะไม่ช่วยในกรณีนี้ ผู้ใช้ระบบปฏิบัติการ 64 บิตอาจต้องใช้ CRT ทั้งเวอร์ชัน x86 และ x64

Windows Update จะตรวจสอบเพื่อดูว่าคอมพิวเตอร์ของคุณมีโปรแกรมปรับปรุงล่าสุดสำหรับแพ็คเกจเหล่านี้ติดตั้งอยู่หรือไม่ แต่จะไม่ตรวจสอบเพื่อให้แน่ใจว่าติดตั้งอย่างถูกต้องและไม่เสียหาย โปรแกรมติดตั้งสามารถตรวจสอบเพื่อให้แน่ใจว่าไฟล์รันไทม์ทั้งหมดเป็นไฟล์ที่ถูกต้องและรายการรีจิสตรีทั้งหมดถูกต้อง

เมื่อคุณดาวน์โหลดตัวติดตั้งที่เหมาะสมแล้ว ให้รันบนระบบ เวอร์ชัน 2005 จะแจ้งให้คุณยอมรับข้อตกลงสิทธิ์การใช้งานก่อนที่จะติดตั้งแพ็คเกจใหม่ ส่วนอื่นๆ ทั้งหมดมี GUI ที่จะถามคุณว่าคุณต้องการซ่อมแซมหรือถอนการติดตั้งการติดตั้งที่มีอยู่หรือไม่ ในกรณีส่วนใหญ่ การดำเนินการซ่อมแซมจะแก้ไขปัญหาต่างๆ ได้

หากคุณต้องการลองใช้วิธีที่รุนแรงที่สุด คุณสามารถถอนการติดตั้งรันไทม์ รีบูตเครื่อง แล้วติดตั้งใหม่อีกครั้ง ฉันไม่แนะนำวิธีนี้กับรันไทม์ปี 2005 และ 2008 หากไม่มี Windows จะทำให้เกิดข้อผิดพลาดมากมาย และจะไม่มีฟังก์ชันการทำงานมากมายสำหรับคุณเมื่อคุณรีบูต

บทสรุป

ด้วยการสังเกตเล็กน้อย การลองผิดลองถูก และความเข้าใจบางอย่างเกี่ยวกับวิธีการสร้างข้อผิดพลาดจากรันไทม์บนระบบ ปัญหาซอฟต์แวร์สามารถค้นพบและแก้ไขได้โดยไม่ต้องใช้เครื่องมือแก้ไขจุดบกพร่องและบันทึกที่ซับซ้อน

คุณพบข้อผิดพลาดรันไทม์ในระบบของคุณหรือไม่? อะไรที่จำเป็นในการแก้ปัญหาเหล่านี้? แจ้งให้เราทราบในความคิดเห็นด้านล่าง

แบ่งปัน แบ่งปัน ทวีต อีเมล นี่คือเหตุผลที่ FBI ออกคำเตือนสำหรับ Hive Ransomware

FBI ได้ออกคำเตือนเกี่ยวกับ ransomware ที่น่ารังเกียจโดยเฉพาะ นี่คือเหตุผลที่คุณต้องระวัง Hive ransomware เป็นพิเศษ

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • Windows
  • เทคโนโลยีอธิบาย
  • ถามผู้เชี่ยวชาญ
  • Windows Explorer
  • Windows
  • File Explorer
  • Windows Search
  • การแก้ไขปัญหา
เกี่ยวกับผู้เขียน Bruce Epper(เผยแพร่บทความ 13 บทความ)

บรูซเล่นอุปกรณ์อิเล็กทรอนิกส์มาตั้งแต่ยุค 70 คอมพิวเตอร์ตั้งแต่ต้นยุค 80 และตอบคำถามเกี่ยวกับเทคโนโลยีที่เขาไม่เคยใช้หรือเคยพบเห็นได้อย่างแม่นยำ เขายังรบกวนตัวเองด้วยการพยายามเล่นกีตาร์

เพิ่มเติมจาก Bruce Epper

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก