ทีมขายของเรามีแอปพลิเคชันภายในที่ติดตั้งซึ่งใช้วัตถุ COM / DLLs แบบกำหนดเองสองสามตัวที่เก็บอยู่ใน System32 ฉันพยายามแทนที่ DLLs เหล่านี้ด้วยเวอร์ชันใหม่กว่าซึ่งใช้งานได้ดีหลังจากการติดตั้ง แต่ไม่ใช่หลังจากรีบูต
นี่คือส่วนที่น่าสนใจ
- ฉันยกเลิกการลงทะเบียน DLL เก่าด้วย regsvr32 / u myDll.dll
- Regsvr32 แสดงไดอะล็อกที่บ่งชี้ความสำเร็จ
- ฉันคัดลอก DLL เก่าไปยังโฟลเดอร์ "บันทึก" และเปลี่ยนชื่อเป็น 20110412-myDll.dll_
- ฉันลบต้นฉบับออกจาก system32
- ฉันใส่ DLL ใหม่ใน system32
- ลงทะเบียน dll ใหม่ด้วย regsvr32 myDll.dll
- ทดสอบ DLL ใหม่ด้วย VBScript - ใช้งานได้ดี
- และส่วนที่สนุก
- Reboot
- เรียกใช้สคริปต์ทดสอบ vb อีกครั้ง มันล้มเหลว
- ดู DLL (ที่ฉันแทนที่) ใน system32 มันถูกแทนที่อย่างน่าอัศจรรย์ด้วย DLL เก่า ฉันตรวจสอบสิ่งนี้ด้วย
fc(เปรียบเทียบแบบไบนารี) กับ system32 \ myDll.dll และบันทึก 20110412-myDll.dll_ - ลบ DLL เก่า ยืนยันว่าจริงแล้วมันหายไป
- ค้นหาไดรฟ์ทั้งหมดสำหรับ "myDll.DLL" รวมถึงโฟลเดอร์ระบบ ตรวจสอบว่าไม่มีอินสแตนซ์ของ DLL เก่านอกเหนือจากรุ่นที่ถูกเปลี่ยนชื่อในโฟลเดอร์ "บันทึก"
- Reboot
- DLL เก่านั้นปรากฏขึ้นอีกครั้งอย่างน่าอัศจรรย์
บัญชีผู้ใช้ที่ฉันใช้อยู่มีสิทธิ์เป็นผู้ดูแลระบบแบบเต็ม ฉันไม่สามารถค้นหากระบวนการทำงานใด ๆ ที่ควรทำเช่นนี้และแผนกไอทีของเราหยุดนิ่ง
ใครมีข้อเสนอแนะ?
ปรับปรุง
ฉันเริ่มเครื่องหนึ่งในเซฟโหมดติดตั้ง DLL ใหม่แล้วเริ่มใหม่อีกครั้ง เวลานี้การเปลี่ยนแปลงดูเหมือนจะใช้งานได้แม้หลังจากการรีสตาร์ทครั้งต่อไป แปลก.
ฉันสามารถทำสิ่งนี้กับเครื่องอื่นที่มีปัญหาเดียวกันและฉันคาดหวังให้มันทำงานได้ แต่ฉันอยากจะรู้ว่าปัญหาคืออะไร โอ๊ะ