मुझे जोड़ना चाहिए: आपको अपने dll का \ system32 \ वैसे भी नहीं डालना चाहिए! अपने कोड को संशोधित करें, अपने इंस्टॉलर को संशोधित करें ... अपने बिट्स के लिए एक घर ढूंढें जो सी के तहत कहीं भी नहीं है: \ windows \
उदाहरण के लिए, आपका इंस्टॉलर आपके डीएलएस में डालता है:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
( नोट : जिस तरह से आप वास्तव में यह करते हैं वह है पर्यावरण var का उपयोग करना:% ProgramFiles% या% ProgramFiles (x86)% जहां प्रोग्राम फ़ाइलें है खोजने के लिए .... आप यह नहीं मान रहे हैं कि यह c: \ program files \ _ है। ..)
और फिर एक रजिस्ट्री टैग सेट करता है:
HKLM\software\<your app name>
-- dllLocation
आपके dll का उपयोग करने वाला कोड रजिस्ट्री को पढ़ता है, फिर गतिशील रूप से उस स्थान के dll से लिंक करता है।
ऊपर जाने का स्मार्ट तरीका है।
आप कभी भी अपने dll, या तीसरे पक्ष के dll को \ system32 \ या \ syswow64 में स्थापित नहीं करते हैं। यदि आपको स्टैटिकली लोड करना है, तो आप अपने एक्सईएल डीआईआर (जहां वे मिल जाएंगे) में अपना डीएल लगाते हैं। यदि आप exe dir का अनुमान नहीं लगा सकते हैं (जैसे कि कुछ अन्य exe आपके dll को कॉल करने जा रहे हैं), तो आपको अपना dll dir खोज पथ में डालना पड़ सकता है (यदि सभी पर इससे बचें!)
system32 और syswow64 विंडोज प्रदान की गई फाइलों के लिए हैं ... किसी के लिए भी फाइलें नहीं हैं । लोगों को सामान रखने की बुरी आदत की वजह से एकमात्र कारण यह है कि यह हमेशा खोज पथ में है, और कई ऐप / मॉड्यूल स्टैटिक लिंकिंग का उपयोग करते हैं। (इसलिए, यदि आप वास्तव में इसके लिए नीचे आते हैं, तो असली पाप स्थिर लिंकिंग है - यह मूल कोड और प्रबंधित कोड में एक पाप है - हमेशा हमेशा गतिशील लिंक!)