windows - How are the GetObject progids maintained? -
विंडोज शैल स्क्रिप्टिंग (वीबीएस):
object.GetObject (strpathname [, strProgID] [StrPrefix])
अब लगता है मेरे पास निम्न कोड है:
सेट myval = getObject ("myObjectRef: myObjectArgs")
< / पूर्व>यह एक मशीन पर काम करता है - और दूसरे पर नहीं।
मैं क्या करना चाहता हूं निश्चित सूची को खोजता है जहां सभी myObjectRef / progIds को बनाए रखा जाता है।
मेरा प्रश्न यह है: GetObject progids कैसे बनाए गए हैं?
मान्यताओं:
- मैं एक उत्तर अधिक परिष्कृत देख रहा हूं "रजिस्ट्री में खोज करता हूं"
- मैं एक विशेष जगह ढूँढ़ने की कोशिश कर रहा हूं जहां मैं अपने प्रोजेक्ट की तलाश में जा सकता हूं कि यह मौजूद है या नहीं ।
मैं एक जवाब अधिक परिष्कृत की तलाश कर रहा हूं "खोज करें रजिस्ट्री में "
खैर, यह थोड़ा मुश्किल है क्योंकि यह वास्तव में सभी लेता है आपको वास्तव में "खोज" करना नहीं है, बस इसे देखने के लिए कहां देखें जो regedit.exe में HKEY_CLASSES_ROOT हाइव के नीचे सही है, चाबियाँ वर्णानुक्रम में क्रमबद्ध हैं, इसलिए बस अपने कुंजीपटल पर "मी" कुंजी टाइप करें और आप पहले से ही उस कॉपजीड को बंद कर रहे हैं जो आप चाहते हैं। यदि आप "myObjectRef.myObjectArgs" कुंजी नहीं देखते हैं, तो आप रनटाइम पर एक कबाउम पर भरोसा कर सकते हैं जब COM इसे नहीं मिल सकता है।
कोई निश्चित सूची नहीं है और कोई ऐसी इकाई नहीं है जो सुनिश्चित करें कि वे अद्वितीय हैं सूची प्रत्येक मशीन के लिए विशिष्ट है, उस मशीन पर जो भी स्थापित किया गया था, यह निर्धारित करता है कि आप Regedit.exe के साथ वापस क्या पाते हैं। वे बस GUID के मानव-अनुकूल संस्करण हैं, यह मूल्य जो वास्तव में मामलों को एक COM घटक का पता लगाने में है वैश्विक स्तर पर एक अद्वितीय आईडी है जो सर्वर की पहचान नहीं करता है। कॉग्गीड कुंजी के सीएलएसआईडी उपकुंजी GUID प्रदान करता है। यह एक बड़ी संख्या है, इंसान के अनुकूल नहीं है।
कॉम्पैक्ट कुंजी को रजिस्ट्री में लिखा जाता है जब घटक स्वतः स्थापित होता है तो एक गायब कुंजी का अर्थ है कि यह संस्थापित नहीं है।
मशीनों के 64-बिट संस्करण को बूट करने वाली मशीनों पर कोई असामान्य समस्या यह नहीं है कि COM सर्वर केवल 32-बिट घटक के रूप में उपलब्ध है ग्राहक एक 64-बिट प्रक्रिया है रजिस्ट्री में इसका समाधान भी किया जाता है, सीएलएसआईडी कुंजी केवल HKLM \ Software \ Wow6432Node \ Classes में मौजूद है। WOW6432Node अनुभाग 32-बिट क्लाइंट देखता है। इसलिए एक 64-बिट क्लाइंट HKLM \ Software \ Classes में दिखता है और कुंजी नहीं मिलेगी ऐसा लगता है जैसे "कोई स्थापित नहीं" समस्या, भले ही यह वास्तव में मौजूद है। बस इसका 64-बिट संस्करण नहीं। SysInternals 'प्रक्रिया मॉनिटर इस तरह की समस्याओं का निदान करने के लिए एक महान उपकरण है आप रजिस्ट्री के माध्यम से असफल क्लाइंट प्रोग्राम खोजते हैं।
Comments
Post a Comment