हमारी बिक्री के लोगों के पास एक इन-हाउस एप्लिकेशन स्थापित है जो सिस्टम 32 में संग्रहीत कुछ कस्टम COM ऑब्जेक्ट / DLL का उपयोग करता है। मैं इनमें से एक DLL को नए संस्करण के साथ बदलने की कोशिश कर रहा हूं, जो कि इंस्टॉलेशन के बाद ठीक काम करता है, लेकिन रिबूट के बाद नहीं।
यहाँ दिलचस्प हिस्सा है।
- मैं regsvr32 / u myDll.dll के साथ पुराने DLL को अपंजीकृत करता हूं
- Regsvr32 एक संवाद दर्शाता है जो सफलता का संकेत देता है।
- मैं पुराने DLL को एक "सेव" फ़ोल्डर में कॉपी करता हूं, और इसे 20110412-myDll.dll_ में बदल देता हूं।
- मैं मूल को सिस्टम 32 से हटाता हूं।
- मैंने नई DLL को system32 में रखा।
- Regsvr32 myDll.dll के साथ नया dll पंजीकृत करें
- VBScript के साथ नए DLL का परीक्षण करें - ठीक काम करता है।
- और मजेदार हिस्सा है
- रीबूट।
- परीक्षण vb स्क्रिप्ट को फिर से चलाएँ। यह विफल रहा।
- System32 में DLL (जिसे मैंने प्रतिस्थापित किया) को देखें। इसे पुराने DLL द्वारा जादुई रूप से बदल दिया गया है। मैंने इसे
fc
system32 \ myDll.dll और सहेजे गए 20110412-myDll.dll_ के साथ (बाइनरी तुलना) सत्यापित किया । - पुराने DLL को हटाएं। सत्यापित करें कि यह वास्तव में, चला गया है।
- सिस्टम फ़ोल्डर्स सहित "myDll.DLL" के लिए सभी ड्राइव खोजें। सत्यापित करें कि "सहेजें" फ़ोल्डर में नामांकित संस्करण के अलावा पुराने DLL के कोई उदाहरण नहीं हैं।
- रीबूट
- पुराने DLL ने फिर से जादुई रूप से पुन: प्रकट किया।
इसके लिए मैं जिस उपयोगकर्ता खाते का उपयोग कर रहा हूं, उसके पास मशीन के पूर्ण व्यवस्थापक अधिकार हैं। मैं ऐसी कोई भी चलने वाली प्रक्रिया नहीं खोज पाया, जो यह करनी चाहिए, और हमारा आईटी विभाग ठप्प है।
किसी के पास कोई सुझाव है?
अद्यतन करें
बस इसके नरक के लिए, मैंने मशीनों में से एक को सुरक्षित मोड में शुरू किया, नया डीएलएल स्थापित किया, और फिर से शुरू किया। इस बार परिवर्तन बाद में पुनः आरंभ होने पर भी काम करता प्रतीत होता है। अजीब।
मैं अन्य मशीनों पर भी ऐसा कर सकता हूं, जो एक ही समस्या को प्रदर्शित करती हैं, और मुझे उम्मीद है कि यह काम करेगी, लेकिन मैं वास्तव में जानना चाहूंगा कि समस्या क्या है। अरे।