मेरे पास 32-बिट प्रतिलिपि इंस्टॉलर है। इसका उपयोग करने के लिए मुझे 32- और 64-बिट अनुप्रयोगों को स्थापित और अनइंस्टॉल करने में सक्षम होना चाहिए।मैं 32-बिट पर्ल को 64-बिट विंडोज रजिस्ट्री को कैसे पढ़ूं?
32- और 64-बिट स्थापित करना ठीक है। 32-बिट अनइंस्टॉल करना भी ठीक है।
हालांकि, 64-बिट अनुप्रयोगों को अनइंस्टॉल करते समय मुझे कोई समस्या है।
एप्लिकेशन केवल नियंत्रण कक्ष में प्रोग्राम निकालें प्रोग्राम में देखे गए एप्लिकेशन का नाम जानता है। उदाहरण के लिए यह "विनज़िप 14.0" हो सकता है जो विनज़िप के लिए प्रदर्शन नाम है।
मैं अनइंस्टॉलेशन के लिए निम्न दृष्टिकोण का उपयोग करता हूं: मैं HKLM/Software/Microsoft/Windows/CurrentVersion/Uninstall
पर जाता हूं और यह देखने के लिए वहां मौजूद कुंजी को पार्स करता हूं कि Winzip मेल खाता है या नहीं। यदि ऐसा है तो मुझे वहां से अनइंस्टॉल स्ट्रिंग मिलती है।
my $register = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
$HKEY_LOCAL_MACHINE->Open($register,$hKey)|| die $!;
#Then parse all the nodes and fetch the uninstall string
तो आवेदन एक 64-बिट स्थापना है, तो स्थापना रद्द करने की जानकारी HKLM/Software/Microsoft/Windows/CurrentVersion/Uninstall
में निवास करेंगे।
हालांकि ऊपर दिए गए पर्ल संस्थापक कोड से HKLM/Software/WOW6432Node/Microsoft/Windows/CurrentVersion/Uninstall
को पढ़ने के लिए कोशिश कर रहा है और यह वहाँ स्थापना नहीं मिल रहा है।
तो 64-बिट हाइव में पाए गए रजिस्ट्री मान को पढ़ने के लिए मैं 32_ बिट प्रक्रिया में पर्ल कोड कैसे चला सकता हूं? मुझे RegOpenKey()
एपीआई पता है जो KEY_WOW64_64KEY
पैरामीटर लेता है। लेकिन चूंकि यह एक विंडोज एपीआई है, मुझे नहीं पता कि इससे मदद मिलेगी या नहीं। फिर भी, क्या कोई अन्य विकल्प है?
संभावित डुप्लिकेट [पर्ल में विंडोज रजिस्ट्री से पढ़ना] (http://stackoverflow.com/questions/30269931/reading-from-windows-registry-in-perl) –