โฟลเดอร์ XP System32 - DLL ถูกแทนที่อย่างน่าอัศจรรย์หลังจากถูกลบ?


3

ทีมขายของเรามีแอปพลิเคชันภายในที่ติดตั้งซึ่งใช้วัตถุ COM / DLLs แบบกำหนดเองสองสามตัวที่เก็บอยู่ใน System32 ฉันพยายามแทนที่ DLLs เหล่านี้ด้วยเวอร์ชันใหม่กว่าซึ่งใช้งานได้ดีหลังจากการติดตั้ง แต่ไม่ใช่หลังจากรีบูต

นี่คือส่วนที่น่าสนใจ

  1. ฉันยกเลิกการลงทะเบียน DLL เก่าด้วย regsvr32 / u myDll.dll
  2. Regsvr32 แสดงไดอะล็อกที่บ่งชี้ความสำเร็จ
  3. ฉันคัดลอก DLL เก่าไปยังโฟลเดอร์ "บันทึก" และเปลี่ยนชื่อเป็น 20110412-myDll.dll_
  4. ฉันลบต้นฉบับออกจาก system32
  5. ฉันใส่ DLL ใหม่ใน system32
  6. ลงทะเบียน dll ใหม่ด้วย regsvr32 myDll.dll
  7. ทดสอบ DLL ใหม่ด้วย VBScript - ใช้งานได้ดี
  8. และส่วนที่สนุก
  9. Reboot
  10. เรียกใช้สคริปต์ทดสอบ vb อีกครั้ง มันล้มเหลว
  11. ดู DLL (ที่ฉันแทนที่) ใน system32 มันถูกแทนที่อย่างน่าอัศจรรย์ด้วย DLL เก่า ฉันตรวจสอบสิ่งนี้ด้วยfc(เปรียบเทียบแบบไบนารี) กับ system32 \ myDll.dll และบันทึก 20110412-myDll.dll_
  12. ลบ DLL เก่า ยืนยันว่าจริงแล้วมันหายไป
  13. ค้นหาไดรฟ์ทั้งหมดสำหรับ "myDll.DLL" รวมถึงโฟลเดอร์ระบบ ตรวจสอบว่าไม่มีอินสแตนซ์ของ DLL เก่านอกเหนือจากรุ่นที่ถูกเปลี่ยนชื่อในโฟลเดอร์ "บันทึก"
  14. Reboot
  15. DLL เก่านั้นปรากฏขึ้นอีกครั้งอย่างน่าอัศจรรย์

บัญชีผู้ใช้ที่ฉันใช้อยู่มีสิทธิ์เป็นผู้ดูแลระบบแบบเต็ม ฉันไม่สามารถค้นหากระบวนการทำงานใด ๆ ที่ควรทำเช่นนี้และแผนกไอทีของเราหยุดนิ่ง

ใครมีข้อเสนอแนะ?

ปรับปรุง

ฉันเริ่มเครื่องหนึ่งในเซฟโหมดติดตั้ง DLL ใหม่แล้วเริ่มใหม่อีกครั้ง เวลานี้การเปลี่ยนแปลงดูเหมือนจะใช้งานได้แม้หลังจากการรีสตาร์ทครั้งต่อไป แปลก.

ฉันสามารถทำสิ่งนี้กับเครื่องอื่นที่มีปัญหาเดียวกันและฉันคาดหวังให้มันทำงานได้ แต่ฉันอยากจะรู้ว่าปัญหาคืออะไร โอ๊ะ


อาจทำตามขั้นตอนที่ 1-7 แล้วตั้งค่าการตรวจสอบกระบวนการในโหมดการบันทึกการบูตเพื่อดูว่ากระบวนการใดกำลังแทนที่ไฟล์ ควรให้เบาะแสกับคุณเกี่ยวกับสิ่งที่เกิดขึ้น
Andrew Lambert

@ ประหลาดใจไม่ใช่ความคิดที่ไม่ดี ฉันจะให้มันยิง
3Dave

คำตอบ:


2

นี่เป็นปัญหาที่เกิดขึ้นกับ System Restore ลองปิดการใช้งานก่อนที่จะแทนที่ DLL

สำหรับข้อมูลเพิ่มเติมดูการคืนค่าระบบในระบบปฏิบัติการ Windows คืออะไร

และhttp://support.microsoft.com/kb/310405


การคืนค่าระบบถูกปิดใช้งาน
3 มิติ

1

ระบบจะเปลี่ยน DLL ที่มีไฟล์ในC:\Windows\System32\DLLCacheโดยการป้องกันแฟ้มของ Windows ตรวจสอบบันทึกของระบบใน Event Viewer (ในเครื่องมือการดูแลระบบ) สำหรับเหตุการณ์นี้:

รหัสเหตุการณ์: 64001
ที่มา: การป้องกันไฟล์ของ Windows
คำอธิบาย: พยายามเปลี่ยนไฟล์ในไฟล์ระบบที่ได้รับการป้องกัน C: \ Windows \ System32 \ myDll.DLL ไฟล์นี้ถูกกู้คืนเป็นเวอร์ชันดั้งเดิมเพื่อรักษาความเสถียรของระบบ เวอร์ชันไฟล์ของไฟล์ระบบคือ xx: xx

ลองลบไฟล์ DLL ที่เก็บไว้DLLCacheแทนที่ DLL System32อีกครั้งจากนั้นรีบูทคอมพิวเตอร์

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


แม้ว่า WFP จะไม่ปกป้องไฟล์ของบุคคลที่สาม
Andrew Lambert

นี่อาจเป็นสิ่งที่ควรค่าแก่การตรวจสอบ หากเหตุการณ์นี้ปรากฏขึ้นในบันทึกเหตุการณ์นั้นจะอธิบายถึงปัญหา
bwDraco

ไม่มีเหตุการณ์ในบันทึกที่เกี่ยวข้องกับ WFP = /
3 มิติ

นอกจากนี้ DLL ไม่ได้อยู่ในโฟลเดอร์ DllCache = /
3

@DavidLively คุณอ่านคำตอบนี้แล้วหรือยัง?
bwDraco
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.