मैं विंडोज 7 64-बिट पर DLL फ़ाइल कैसे पंजीकृत करूं?


101

मैंने निम्नलिखित कोड का उपयोग करने की कोशिश की है:

cd c:\windows\system32
regsvr32.exe dllname.ax

लेकिन यह मेरे लिए काम नहीं कर रहा है। मैं 64-बिट प्रोसेसर के साथ विंडोज 7 पर डीएलएल फ़ाइल कैसे दर्ज कर सकता हूं?


इस प्रश्न को "vb.net" के रूप में चिह्नित करते हुए देखकर, मुझे आश्चर्य होता है कि आप VB.NET में बनाए गए DLL को पंजीकृत करने का प्रयास क्यों कर रहे हैं। के साथ प्रयोग किया जा करने के लिए regsvr32, एक DLL कार्यों का निर्यात करना चाहिए DllRegisterServerऔर DllUnregisterServer। आपके द्वारा बनाए गए DLL के विशाल बहुमत का कोई रजिस्टर नहीं है।
कोड़ी ग्रे

12
आपके द्वारा क्या मतलब है काम नहीं करता या उपयोगी नहीं है? क्या आपको एक त्रुटि संदेश मिलता है? यह क्या कहता है?
कोड़ी ग्रे

जवाबों:


68

regsvr32 name.dllकमांड प्रॉम्प्ट में टाइप करें (एलिवेटेड मोड में निष्पादित!) और "एंटर" दबाएं। ध्यान दें कि name.dllजिस DLL को आप पंजीकृत करना चाहते हैं उसका नाम बदल दिया जाना चाहिए। उदाहरण के लिए, यदि आप iexplore.dll को पंजीकृत करना चाहते हैं, तो टाइप करें regsvr32 iexplore.dll


5
regsvr32 फ़ाइल नाम और एक्सटेंशन के साथ .dll फ़ाइल का पथ और प्रवेश दर्ज करें
आरके शर्मा

202

ठीक है, आप निर्दिष्ट नहीं करते हैं कि यह 32 या 64 बिट डीएल है और आप त्रुटि संदेश शामिल नहीं करते हैं, लेकिन मुझे लगता है कि यह इस KB आलेख में वर्णित समान समस्या है: त्रुटि संदेश जब आप Regsvr32.exe चलाते हैं 64-बिट विंडोज पर

उस लेख से उद्धरण:

यह व्यवहार इसलिए होता है क्योंकि System32 फ़ोल्डर में Regsvr32.exe फ़ाइल 64-बिट संस्करण है। जब आप DLL को पंजीकृत करने के लिए Regsvr32 चलाते हैं, तो आप डिफ़ॉल्ट रूप से 64-बिट संस्करण का उपयोग कर रहे हैं।

उस लेख से समाधान:

इस समस्या को हल करने के लिए, Regsvr32.exe% SystemRoot% \ Syswow64 फ़ोल्डर से चलाएँ। उदाहरण के लिए, DLL को पंजीकृत करने के लिए निम्न कमांड टाइप करें: cd \windows\syswow64 regsvr32 c:\filename.dll


13
यह चयनित उत्तर क्यों नहीं है?
माइक डेवेनी

5
यह वास्तव में सही उत्तर होना चाहिए। मैं समझ सकता हूं कि उनकी मूल पोस्ट में सिंटैक्स गलत था लेकिन राजकुमार ने टिप्पणी की कि उन्हें सही सिंटैक्स का उपयोग करने पर भी एक त्रुटि संदेश मिल रहा था। यह एक के बजाय खोज करने वाले किसी व्यक्ति के लिए सही उत्तर के लिए दो चरण लेता है। पहले उत्तर के रूप में चयनित सही, फिर टिप्पणी श्रृंखला के बाद, इस पोस्ट पर समाप्त।
रोब

102

अगर DLL 32 है बिट है:

DLL को C: \ Windows \ SysWoW64 \ _ को
एक उन्नत कमांड प्रॉम्प्ट में कॉपी करें :%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

अगर DLL 64 है बिट है:

DLL को C: \ Windows \ System32 \ को
एक उन्नत कमांड प्रॉम्प्ट में कॉपी करें :%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

मुझे पता है कि यह गलत तरीका है, लेकिन यह काम करने का तरीका है। देख:

http://support.microsoft.com/kb/249873
उद्धरण: "नोट विंडोज ऑपरेटिंग सिस्टम के 64-बिट संस्करण पर, Regsv32.exe फ़ाइल के दो संस्करण हैं:
64-बिट संस्करण% systemroot% \ है System32 \ regsvr32.exe।
32-बिट संस्करण% systemroot% \ SysWoW64 \ regsvr32.exe है।
"


26
+1 के लिए "मुझे पता है कि यह गलत तरीके से गोल लगता है, लेकिन यह जिस तरह से काम करता है" support.microsoft.com के लिंक के साथ ... w / o लिंक पर विश्वास करना मुश्किल है।
ट्रेवर बॉयड स्मिथ

6
"एलिवेटेड cmd में" बहुत महत्वपूर्ण है !!
शिंदिगो

4
मुझे नहीं लगता कि हमें इसे system32 या syswow64 फ़ोल्डर में कॉपी करना होगा। जहाँ भी हो, फ़ाइल को पंजीकृत करें।
निकोस

30

एक x64 सिस्टम पर, सिस्टम32 64 बिट के लिए है और syswow64 32 बिट के लिए है (किसी अन्य उत्तर में बताए गए तरीके से नहीं)। WOW (विंडोज पर विंडोज) 32 बिट सबसिस्टम है जो 64 बिट सबसिस्टम के तहत चलता है)।

यह नामकरण में गड़बड़ी है, और केवल भ्रमित करने के लिए कार्य करता है, लेकिन यह तरीका है।

फिर ...

syswow64 32 बिट, 64 बिट नहीं है।

system32 64 बिट, 32 बिट नहीं है।

इनमें से प्रत्येक निर्देशिका में एक regsrv32 है। एक 64 बिट है, और दूसरा 32 बिट है। यह odbcad32 और et al के साथ समान डील है। (यदि आप 32-बिट ODBC ड्राइवर देखना चाहते हैं जो सिस्टम 32 में डिफ़ॉल्ट odbcad32 के साथ दिखाई नहीं देगा जो 64-बिट है।)


1
इससे क्या फर्क पड़ता है? regsvr32विवरणों के बारे में ध्यान रखेंगे, सैद्धांतिक रूप से यह पता लगाएंगे कि क्या आप 32 बिट या 64 बिट डीएलएल दर्ज कर रहे हैं: stackoverflow.com/questions/18935163/…
Sk8erPeter 21

8

प्रारंभ मेनू खोलें और खोज बॉक्स में cmd ​​टाइप करें Ctrl + Shift दबाएं और Enter दबाएं

यह कमांड प्रॉम्प्ट को एडमिनिस्ट्रेटर मोड में चलाता है।

अब टाइप करें: regsvr32 MyComobject.dll


6

अंत में मैंने पाया कि समाधान सिर्फ प्रशासक के रूप में CMD चलाते हैं, फिर लिखें

cd \windows\syswow64

तो यह लिखें

regsvr32 c:\filename.dll

मुझे उम्मीद है कि उत्तर आपकी मदद करेगा


यदि आपने syswow64 फ़ोल्डर में filename.dll को पहले ही कॉपी कर लिया है, और आप कमांड प्रॉम्प्ट में syswow64 में वर्किंग डायरेक्टरी को बदल देते हैं, तो "regsvr32 c: \ filename.dll में" c: \ "आवश्यक नहीं है। संक्षेप में, "regsvr32 c: \ filename.dll" को "regsvr32 filename.dll" पढ़ना चाहिए
जोश मैककैरिन

6

यदि DLL 32 बिट है:

  1. DLL को C: \ Windows \ SysWoW64 \ कॉपी करें
  2. ऊंचे cmd में:% windir% \ SysWoW64 \ regsvr32.exe% windir% \ SysWoW64 \ namell.dll

अगर DLL 64 बिट है:

  1. DLL को C: \ Windows \ System32 \ को कॉपी करें
  2. उन्नत cmd में:% windir% \ System32 \ regsvr32.exe% windir% \ System32 \ namell.dll

6

यहां सब कुछ गलत रास्ते के रूप में विफल हो रहा था। फिर मुझे पुराने Win95 दिनों की एक ट्रिक याद आई। प्रोग्राम फ़ोल्डर खोलें जहाँ .dll रहता है, C: / Windows / System32 को regsvr32 तक नीचे स्क्रॉल करें और rgsrver32 पर प्रोग्राम फ़ोल्डर से dll खींचें और छोड़ें। बूम, किया।


2
यह काम करता है, लेकिन समस्याग्रस्त हो सकता है अगर आपको इसे एक व्यवस्थापक के रूप में चलाने की आवश्यकता है।
वर्कबाइट

3

त्रुटि संदेश जानने के बजाय मूल्यवान होगा। यह जानकारी प्रदान करने के लिए है, भले ही इससे आपको कोई मतलब नहीं है लेकिन यह हमारे लिए करता है। अनुमान लगाने के लिए मजबूर होने के बाद, मैं कहूंगा कि DLL एक 32-बिट डायरेक्टएक्स फ़िल्टर है। किस मामले में यह उचित कार्रवाई होनी चाहिए:

cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax

इसे एक उन्नत कमांड प्रॉम्प्ट पर चलाया जाना चाहिए ताकि UAC रजिस्ट्री एक्सेस को रोक न सके जो आवश्यक है। इस बारे में अधिक सवाल पूछें superuser.com पर


3

मैंने इस अत्यंत सरल विधि का परीक्षण किया और यह पूरी तरह से काम करता है - लेकिन मैं बिल्ट-इन एडमिनिस्ट्रेटर खाते का उपयोग करता हूं, इसलिए मुझे उन्नत विशेषाधिकारों के लिए हुप्स से कूदना नहीं पड़ता है।

निम्न बैच फ़ाइल सिस्टम फ़ोल्डर में / से बाहर फ़ाइलों को स्थानांतरित करने की आवश्यकता के उपयोगकर्ता को राहत देती है। यह भी उचित संस्करण को लागू करने के लिए विंडोज तक छोड़ देता है Regsvr32

निर्देश:

  • उस फ़ोल्डर में जिसमें लाइब्रेरी ( -.dllया -.ax) फ़ाइल है जिसे आप रजिस्टर करना चाहते हैं, एक नई टेक्स्ट फ़ाइल खोलें और नीचे दी गई दिनचर्या में से एक में पेस्ट करें:

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
    copy %1 C:\Windows\System32
    regsvr32 "%nx1"
    echo END BATCH FILE
    pause
    

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
    copy %1 C:\Windows\SysWOW64
    regsvr32 "%nx1"
    echo END BATCH FILE
    pause
    
  • अपनी नई टेक्स्ट फ़ाइल को एक बैच ( -.bat) फ़ाइल के रूप में सहेजें ; इसके बाद बैच फ़ाइल के शीर्ष पर अपनी -.dllया -.axफ़ाइल को बस खींचें और छोड़ें ।

  • यदि UAC आपको एक प्रशासक के रूप में बैच फ़ाइल को चलाने का अवसर नहीं देता है, तो आपको विशेष रूप से विशेषाधिकार (विंडोज 3 के लिए निर्देश) को बढ़ाने की आवश्यकता हो सकती है:

    1. बैच फ़ाइल पर राइट-क्लिक करें;
    2. चुनते हैं Create shortcut ;
    3. शॉर्टकट पर राइट-क्लिक करें;
    4. चुनते हैं Properties ;
    5. दबाएं Compatibilityटैब पर ;
    6. लेबल वाले बॉक्स को चेक करें Run this program as administrator ;
    7. बैच फ़ाइल के बजाय नए शॉर्टकट के शीर्ष पर अपनी -.dllया -.axफ़ाइल को खींचें और छोड़ें ।

यह बात है । मैंने यूएसी से संबंधित फॉलो-अप के प्रयास को विफल करने के COPY बजाय चुना MOVE । मूल पुस्तकालय ( -.dll या ) फ़ाइल को हटाने के बाद सफल पंजीकरण होना चाहिए -.ax

सिस्टम फ़ोल्डर ( C:\Windows\System32 या ) के लिए पिछले पासों द्वारा की गई प्रतियों के बारे में चिंता न करेंC:\Windows\SysWOW64 - जब आप बैच फ़ाइल चलाते हैं, तो उन्हें हर बार अधिलेखित कर दिया जाएगा।

जब तक आपने गलत बैच फ़ाइल नहीं चलाई , जिस स्थिति में आप शायद उचित बैच फ़ाइल चलाने से पहले गलत सिस्टम फ़ोल्डर ( C:\Windows\System32 या C:\Windows\SysWOW64 ) में बनाई गई कॉपी को हटाना चाहते हैं , ... या ...

  • Windows को अपनी निर्देशिका स्थान को पूरी तरह से योग्य करके रजिस्टर करने के लिए सही लाइब्रेरी फ़ाइल चुनने में मदद करें।

    1. सही बैच फ़ाइल से सिस्टम फ़ोल्डर पथ की प्रतिलिपि बनाएँ
      • यदि 64-बिट: C:\Windows\System32
      • यदि 32-बिट: C:\Windows\SysWOW64
    2. इसे अगली पंक्ति में चिपकाएँ ताकि यह पूर्व हो जाए %nx1
      • यदि 64-बिट: regsvr32 "C:\Windows\System32\%nx1"
      • यदि 32-बिट: regsvr32 "C:\Windows\SysWOW64\%nx1"
        • उद्धरण चिह्नों के अंदर पेस्ट पथ
        • %nx1सिस्टम फ़ोल्डर पथ से अलग करने के लिए बैकस्लैश सम्मिलित करें
      • या ...

  • इस शॉटगन बैच फ़ाइल को चलाएं, जो (क्रम में) होगी:

    1. निरस्त पंजीकरण प्रक्रियाओं की सफाई करें
      • अपनी लाइब्रेरी फ़ाइल द्वारा पूर्ण की गई किसी भी पंजीकरण प्रक्रिया को उल्टा कर दें;
      • अपनी लाइब्रेरी फ़ाइल की किसी भी प्रतिलिपि को हटा दें जिसे सिस्टम फ़ोल्डर में सहेजा गया है;
      • आपको इस बिंदु पर बैच फ़ाइल को समाप्त करने की अनुमति देने के लिए रोकें (और यदि आप चाहें तो दूसरे को चलाएं)।
    2. अपनी लाइब्रेरी फ़ाइल पर 64-बिट इंस्टालेशन का प्रयास करें
      • अपनी लाइब्रेरी फ़ाइल को कॉपी करें C:\Windows\System32;
      • अपनी लाइब्रेरी फ़ाइल को 64-बिट प्रक्रिया के रूप में पंजीकृत करें;
      • आपको इस बिंदु पर बैच फ़ाइल को समाप्त करने की अनुमति देने के लिए रोकें।
    3. 64-बिट इंस्टॉलेशन को पूर्ववत करें
      • 64-बिट प्रक्रिया के रूप में अपनी लाइब्रेरी फ़ाइल के किसी भी पंजीकरण को उल्टा करें;
      • से अपनी लाइब्रेरी फ़ाइल हटाएं C:\Windows\System32;
      • आपको इस बिंदु पर बैच फ़ाइल को समाप्त करने की अनुमति देने के लिए रोकें (और यदि आप चाहें तो दूसरे को चलाएं)।
    4. अपनी लाइब्रेरी फ़ाइल में 32-बिट इंस्टालेशन का प्रयास करें
      • अपनी लाइब्रेरी फ़ाइल को कॉपी करें C:\Windows\SystemWOW64
      • अपनी लाइब्रेरी फ़ाइल को 32-बिट प्रक्रिया के रूप में पंजीकृत करें;
      • आपको इस बिंदु पर बैच फ़ाइल को समाप्त करने की अनुमति देने के लिए रोकें।
    5. लाइब्रेरी फ़ाइल की मूल, अपंजीकृत प्रतिलिपि हटाएं

Run as administratorजब मुझे बैट फ़ाइल के लिए शॉर्टकट बनाया जाता है तो वह बाहर हो जाता है। मैं व्यवस्थापक के रूप में लॉग इन हूं। इसके अलावा, यह %nx1या है %n1?
जॉन ग्रेह

3

विंडोज 7 में अंतर है। लॉग ऑन करने पर एडमिनिस्ट्रेटर नहीं होता है प्रोग्रामर के रूप में प्रोग्राम चलाने के दौरान उतने अधिकार दिए जाते हैं।

प्रारंभ पर जाएं - सभी कार्यक्रम - एसेसरीज। कमांड विंडो पर राइट क्लिक करें और "Run as एडमिनिस्ट्रेटर" चुनें, अब dll को सामान्य रूप से रजिस्टर करें: regsrvr32 xxx.dll


3

और ऐसा करते समय, यदि आपको त्रुटि कोड 0x80040201 मिलता है, तो DllRegisterServer में समाधान का प्रयास करें त्रुटि कोड 0x80040201 के साथ विफल हो गया है , लेकिन सुनिश्चित करें कि आप कमांड प्रॉम्प्ट को रन एडमिनिस्ट्रेटर के रूप में खोलें ।


3

आपको चलाने की आवश्यकता cmd.exeहैc:\windows\system32\ by administrator

कमांड्स: अनरिजर्वेशन के लिए * .dll फाइलें

regsvr32.exe /u C:\folder\folder\name.dll

पंजीकरण के लिए * .dll फाइलें

regsvr32.exe C:\folder\folder\name.dll

2

Regsvr32 के बारे में भ्रम का एक हिस्सा यह है कि 64-बिट विंडो पर नाम और पथ नहीं बदला है, लेकिन अब यह 64-बिट DLL को पंजीकृत करता है। 32-बिट regsvr32 SysWOW64 में मौजूद है, एक ऐसा नाम जो 64-बिट अनुप्रयोगों का प्रतिनिधित्व करता है। हालाँकि नाम में WOW64 विंडोज 64 पर विंडोज को संदर्भित करता है, या विंडोज 64-बिट पर विंडोज 32-बिट अधिक अन्वेषण। जब आप इसे इस तरह से सोचते हैं तो नाम समझ में आता है भले ही यह इस संदर्भ में भ्रामक हो।

मुझे MSDN ब्लॉग पर अपना मूल स्रोत नहीं मिल रहा है लेकिन इसे इस विकिपीडिया लेख http://en.wikipedia.org/wiki/WoW64 में संदर्भित किया गया है


1

यहाँ मैं एक Win7 x64 मशीन पर इस मुद्दे को कैसे तय किया गया है:

1 - त्रुटि संदेश:

"CoCreateInstance () विफल Plkease अपनी रजिस्ट्री प्रविष्टियों की जाँच करें CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} और सुनिश्चित करें कि आप एक व्यवस्थापक के रूप में लॉग इन हैं"

2 - तय प्रक्रिया:

  • Cmd.exe पर cmd / RightMouse क्लिक करें / शुरू करें और "व्यवस्थापक के रूप में चलाएं" चुनें
  • टाइप: regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Program Files \ Autodesk \ 3ds मैक्स डिजाइन 2015 \ MAXCompend.dll
  • विन 7 को फिर से शुरू करें और व्यापार में वापस आएँ!

उम्मीद है की यह मदद करेगा !

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