XP System32 फ़ोल्डर - डीएलएल को हटाने के बाद जादुई रूप से बदला जा रहा है?


3

हमारी बिक्री के लोगों के पास एक इन-हाउस एप्लिकेशन स्थापित है जो सिस्टम 32 में संग्रहीत कुछ कस्टम COM ऑब्जेक्ट / DLL का उपयोग करता है। मैं इनमें से एक DLL को नए संस्करण के साथ बदलने की कोशिश कर रहा हूं, जो कि इंस्टॉलेशन के बाद ठीक काम करता है, लेकिन रिबूट के बाद नहीं।

यहाँ दिलचस्प हिस्सा है।

  1. मैं regsvr32 / u myDll.dll के साथ पुराने DLL को अपंजीकृत करता हूं
  2. Regsvr32 एक संवाद दर्शाता है जो सफलता का संकेत देता है।
  3. मैं पुराने DLL को एक "सेव" फ़ोल्डर में कॉपी करता हूं, और इसे 20110412-myDll.dll_ में बदल देता हूं।
  4. मैं मूल को सिस्टम 32 से हटाता हूं।
  5. मैंने नई DLL को system32 में रखा।
  6. Regsvr32 myDll.dll के साथ नया dll पंजीकृत करें
  7. VBScript के साथ नए DLL का परीक्षण करें - ठीक काम करता है।
  8. और मजेदार हिस्सा है
  9. रीबूट।
  10. परीक्षण vb स्क्रिप्ट को फिर से चलाएँ। यह विफल रहा।
  11. System32 में DLL (जिसे मैंने प्रतिस्थापित किया) को देखें। इसे पुराने DLL द्वारा जादुई रूप से बदल दिया गया है। मैंने इसे fcsystem32 \ myDll.dll और सहेजे गए 20110412-myDll.dll_ के साथ (बाइनरी तुलना) सत्यापित किया ।
  12. पुराने DLL को हटाएं। सत्यापित करें कि यह वास्तव में, चला गया है।
  13. सिस्टम फ़ोल्डर्स सहित "myDll.DLL" के लिए सभी ड्राइव खोजें। सत्यापित करें कि "सहेजें" फ़ोल्डर में नामांकित संस्करण के अलावा पुराने DLL के कोई उदाहरण नहीं हैं।
  14. रीबूट
  15. पुराने DLL ने फिर से जादुई रूप से पुन: प्रकट किया।

इसके लिए मैं जिस उपयोगकर्ता खाते का उपयोग कर रहा हूं, उसके पास मशीन के पूर्ण व्यवस्थापक अधिकार हैं। मैं ऐसी कोई भी चलने वाली प्रक्रिया नहीं खोज पाया, जो यह करनी चाहिए, और हमारा आईटी विभाग ठप्प है।

किसी के पास कोई सुझाव है?

अद्यतन करें

बस इसके नरक के लिए, मैंने मशीनों में से एक को सुरक्षित मोड में शुरू किया, नया डीएलएल स्थापित किया, और फिर से शुरू किया। इस बार परिवर्तन बाद में पुनः आरंभ होने पर भी काम करता प्रतीत होता है। अजीब।

मैं अन्य मशीनों पर भी ऐसा कर सकता हूं, जो एक ही समस्या को प्रदर्शित करती हैं, और मुझे उम्मीद है कि यह काम करेगी, लेकिन मैं वास्तव में जानना चाहूंगा कि समस्या क्या है। अरे।


हो सकता है कि कदम 1-7 कर रहा हो और फिर बूट लॉगिंग मोड में प्रक्रिया मॉनिटर सेट करके यह देखने के लिए कि कौन सी प्रक्रिया फ़ाइल को बदल रही है। आपको कुछ सुराग देना चाहिए कि क्या चल रहा है।
एंड्रयू लैम्बर्ट

@ कोई बुरा विचार नहीं है। मैं इसे एक शॉट दूँगा।
डीप

जवाबों:


2

यह सिस्टम पुनर्स्थापना के साथ सबसे अधिक समस्या है। DLL को बदलने से पहले इसे अक्षम करने का प्रयास करें।

अधिक जानकारी के लिए, देखें कि विंडोज ऑपरेटिंग सिस्टम में सिस्टम रिस्टोर क्या है?

और http://support.microsoft.com/kb/310405


सिस्टम पुनर्स्थापना अक्षम है।
डीव

1

सिस्टम विंडोज फाइल प्रोटेक्शनC:\Windows\System32\DLLCache द्वारा फाइल में DLL की जगह ले रहा है । इस ईवेंट के लिए इवेंट व्यूअर (व्यवस्थापकीय उपकरण में सिस्टम लॉग) की जाँच करें:

इवेंट आईडी: 64001
स्रोत: विंडोज फ़ाइल सुरक्षा
विवरण: संरक्षित सिस्टम फ़ाइल C: \ Windows \ System32 \ myDll.DLL पर फ़ाइल प्रतिस्थापन का प्रयास किया गया था। सिस्टम स्थिरता बनाए रखने के लिए इस फ़ाइल को मूल संस्करण में पुनर्स्थापित किया गया था। सिस्टम फ़ाइल का फ़ाइल संस्करण xx: xx है

में संग्रहीत DLL फ़ाइल को हटाने का प्रयास करें, फिर से DLLCacheDLL को बदलें System32, फिर कंप्यूटर को रिबूट करें

संपादित करें: अपने सुरक्षा सॉफ़्टवेयर में लॉग की जाँच करें , क्योंकि कुछ सुरक्षा प्रोग्राम सिस्टम DLL की निगरानी करते हैं और फ़ाइल को बदलने का प्रयास करते हैं। आप डीएलएल की जगह, विशेष रूप से "विकल्प" के तहत स्थित "सक्षम बूट लॉगिंग" सुविधा के साथ स्टार्टअप के दौरान कार्यक्रम की जांच करने के लिए प्रक्रिया मॉनिटर का उपयोग करके भी कोशिश कर सकते हैं ।


WFP यद्यपि तृतीय-पक्ष फ़ाइलों की सुरक्षा नहीं करता है।
एंड्रयू लैम्बर्ट

यह शायद अभी भी जाँच के लायक है; यदि यह घटना लॉग में दिखाई देती है, तो यह समस्या की व्याख्या करेगा।
bwDraco

WFP से संबंधित लॉग में कोई घटना नहीं। = /
3Dave

इसके अलावा, DLL DllCache फ़ोल्डर में नहीं है। = /
3Dave

@DavidLively, क्या आपने इस उत्तर को संपादित पढ़ा है?
bwDraco
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.