मैंने निम्नलिखित कोड का उपयोग करने की कोशिश की है:
cd c:\windows\system32
regsvr32.exe dllname.ax
लेकिन यह मेरे लिए काम नहीं कर रहा है। मैं 64-बिट प्रोसेसर के साथ विंडोज 7 पर डीएलएल फ़ाइल कैसे दर्ज कर सकता हूं?
मैंने निम्नलिखित कोड का उपयोग करने की कोशिश की है:
cd c:\windows\system32
regsvr32.exe dllname.ax
लेकिन यह मेरे लिए काम नहीं कर रहा है। मैं 64-बिट प्रोसेसर के साथ विंडोज 7 पर डीएलएल फ़ाइल कैसे दर्ज कर सकता हूं?
जवाबों:
regsvr32 name.dll
कमांड प्रॉम्प्ट में टाइप करें (एलिवेटेड मोड में निष्पादित!) और "एंटर" दबाएं। ध्यान दें कि name.dll
जिस DLL को आप पंजीकृत करना चाहते हैं उसका नाम बदल दिया जाना चाहिए। उदाहरण के लिए, यदि आप iexplore.dll को पंजीकृत करना चाहते हैं, तो टाइप करें regsvr32 iexplore.dll
।
regsvr32
फ़ाइल नाम और एक्सटेंशन के साथ .dll फ़ाइल का पथ और प्रवेश दर्ज करें
ठीक है, आप निर्दिष्ट नहीं करते हैं कि यह 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
अगर 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 है।
"
एक 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-बिट है।)
regsvr32
विवरणों के बारे में ध्यान रखेंगे, सैद्धांतिक रूप से यह पता लगाएंगे कि क्या आप 32 बिट या 64 बिट डीएलएल दर्ज कर रहे हैं: stackoverflow.com/questions/18935163/…
अंत में मैंने पाया कि समाधान सिर्फ प्रशासक के रूप में CMD चलाते हैं, फिर लिखें
cd \windows\syswow64
तो यह लिखें
regsvr32 c:\filename.dll
मुझे उम्मीद है कि उत्तर आपकी मदद करेगा
यदि DLL 32 बिट है:
अगर DLL 64 बिट है:
यहां सब कुछ गलत रास्ते के रूप में विफल हो रहा था। फिर मुझे पुराने Win95 दिनों की एक ट्रिक याद आई। प्रोग्राम फ़ोल्डर खोलें जहाँ .dll रहता है, C: / Windows / System32 को regsvr32 तक नीचे स्क्रॉल करें और rgsrver32 पर प्रोग्राम फ़ोल्डर से dll खींचें और छोड़ें। बूम, किया।
त्रुटि संदेश जानने के बजाय मूल्यवान होगा। यह जानकारी प्रदान करने के लिए है, भले ही इससे आपको कोई मतलब नहीं है लेकिन यह हमारे लिए करता है। अनुमान लगाने के लिए मजबूर होने के बाद, मैं कहूंगा कि DLL एक 32-बिट डायरेक्टएक्स फ़िल्टर है। किस मामले में यह उचित कार्रवाई होनी चाहिए:
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
इसे एक उन्नत कमांड प्रॉम्प्ट पर चलाया जाना चाहिए ताकि UAC रजिस्ट्री एक्सेस को रोक न सके जो आवश्यक है। इस बारे में अधिक सवाल पूछें superuser.com पर
मैंने इस अत्यंत सरल विधि का परीक्षण किया और यह पूरी तरह से काम करता है - लेकिन मैं बिल्ट-इन एडमिनिस्ट्रेटर खाते का उपयोग करता हूं, इसलिए मुझे उन्नत विशेषाधिकारों के लिए हुप्स से कूदना नहीं पड़ता है।
निम्न बैच फ़ाइल सिस्टम फ़ोल्डर में / से बाहर फ़ाइलों को स्थानांतरित करने की आवश्यकता के उपयोगकर्ता को राहत देती है। यह भी उचित संस्करण को लागू करने के लिए विंडोज तक छोड़ देता है 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 के लिए निर्देश) को बढ़ाने की आवश्यकता हो सकती है:
Create shortcut
;Properties
;Compatibility
टैब पर ;Run this program as administrator
;-.dll
या -.ax
फ़ाइल को खींचें और छोड़ें ।यह बात है । मैंने यूएसी से संबंधित फॉलो-अप के प्रयास को विफल करने के COPY
बजाय चुना MOVE
। मूल पुस्तकालय ( -.dll
या ) फ़ाइल को हटाने के बाद सफल पंजीकरण होना चाहिए -.ax
।
सिस्टम फ़ोल्डर ( C:\Windows\System32
या ) के लिए पिछले पासों द्वारा की गई प्रतियों के बारे में चिंता न करेंC:\Windows\SysWOW64
- जब आप बैच फ़ाइल चलाते हैं, तो उन्हें हर बार अधिलेखित कर दिया जाएगा।
जब तक आपने गलत बैच फ़ाइल नहीं चलाई , जिस स्थिति में आप शायद उचित बैच फ़ाइल चलाने से पहले गलत सिस्टम फ़ोल्डर ( C:\Windows\System32
या C:\Windows\SysWOW64
) में बनाई गई कॉपी को हटाना चाहते हैं , ... या ...
Windows को अपनी निर्देशिका स्थान को पूरी तरह से योग्य करके रजिस्टर करने के लिए सही लाइब्रेरी फ़ाइल चुनने में मदद करें।
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
सिस्टम फ़ोल्डर पथ से अलग करने के लिए बैकस्लैश सम्मिलित करेंइस शॉटगन बैच फ़ाइल को चलाएं, जो (क्रम में) होगी:
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
Run as administrator
जब मुझे बैट फ़ाइल के लिए शॉर्टकट बनाया जाता है तो वह बाहर हो जाता है। मैं व्यवस्थापक के रूप में लॉग इन हूं। इसके अलावा, यह %nx1
या है %n1
?
विंडोज 7 में अंतर है। लॉग ऑन करने पर एडमिनिस्ट्रेटर नहीं होता है प्रोग्रामर के रूप में प्रोग्राम चलाने के दौरान उतने अधिकार दिए जाते हैं।
प्रारंभ पर जाएं - सभी कार्यक्रम - एसेसरीज। कमांड विंडो पर राइट क्लिक करें और "Run as एडमिनिस्ट्रेटर" चुनें, अब dll को सामान्य रूप से रजिस्टर करें: regsrvr32 xxx.dll
और ऐसा करते समय, यदि आपको त्रुटि कोड 0x80040201 मिलता है, तो DllRegisterServer में समाधान का प्रयास करें त्रुटि कोड 0x80040201 के साथ विफल हो गया है , लेकिन सुनिश्चित करें कि आप कमांड प्रॉम्प्ट को रन एडमिनिस्ट्रेटर के रूप में खोलें ।
Regsvr32 के बारे में भ्रम का एक हिस्सा यह है कि 64-बिट विंडो पर नाम और पथ नहीं बदला है, लेकिन अब यह 64-बिट DLL को पंजीकृत करता है। 32-बिट regsvr32 SysWOW64 में मौजूद है, एक ऐसा नाम जो 64-बिट अनुप्रयोगों का प्रतिनिधित्व करता है। हालाँकि नाम में WOW64 विंडोज 64 पर विंडोज को संदर्भित करता है, या विंडोज 64-बिट पर विंडोज 32-बिट अधिक अन्वेषण। जब आप इसे इस तरह से सोचते हैं तो नाम समझ में आता है भले ही यह इस संदर्भ में भ्रामक हो।
मुझे MSDN ब्लॉग पर अपना मूल स्रोत नहीं मिल रहा है लेकिन इसे इस विकिपीडिया लेख http://en.wikipedia.org/wiki/WoW64 में संदर्भित किया गया है
यहाँ मैं एक Win7 x64 मशीन पर इस मुद्दे को कैसे तय किया गया है:
"CoCreateInstance () विफल Plkease अपनी रजिस्ट्री प्रविष्टियों की जाँच करें CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} और सुनिश्चित करें कि आप एक व्यवस्थापक के रूप में लॉग इन हैं"
उम्मीद है की यह मदद करेगा !
regsvr32
, एक DLL कार्यों का निर्यात करना चाहिएDllRegisterServer
औरDllUnregisterServer
। आपके द्वारा बनाए गए DLL के विशाल बहुमत का कोई रजिस्टर नहीं है।