c# बीएचओ 64 बिट में काम नहीं कर सकता




windows internet-explorer (2)

मैं IE11 ब्राउज़र सहायक ऑब्जेक्ट पर काम कर रहा हूँ जब मैं इसे x 86 में बना देता हूं, तब मुझे काम मिल गया। समस्या यह है, मैं एक्स 64 पर इस प्रोजेक्ट का उपयोग करना चाहता हूं, जब यह एक्स 64 पर बनाया गया है, तो बीएचओ एक्सटेंशन काम नहीं कर रहा है।

एक्सटेंशन इंटरनेट एक्सप्लोरर ऐड-ऑन स्क्रीन में दिखाई देता है, लेकिन जावास्क्रिप्ट पॉपअप प्रदर्शित नहीं हो रहा है।

डीएलएल रजिस्ट्रम के x64 संस्करण का प्रयोग कर विजुअल स्टूडियो कमांड प्रॉम्प्ट के माध्यम से व्यवस्थापक के रूप में पंजीकृत किया जाता है, बिना /codebase और /tlb बिना /tlb बिना परिणाम के। रजिस्ट्री कुंजी को सफलतापूर्वक मेरी रजिस्ट्री में जोड़ा गया है लेकिन बीएचओ बस IE में काम नहीं कर रहा है। मैंने फाइल फ़ाइलों के सबफ़ोल्डर में फ़ाइलों को रखने का भी प्रयास किया है, लेकिन यह केवल काम नहीं कर रहा है

जब मैं अपने आईई को बढ़ाकर संरक्षित मोड में चलाता हूं तो ऐड-ऑन मैनेजर से पता चलता है कि मेरा बीएचओ incompatible , लेकिन ईपीएम के बिना आईई दिखाता है हालांकि यह काम नहीं कर रहा है।

मैं बीएचओ को एक्स 64 पर काम करना चाहता हूं।

मैंने यह 'हैलो वर्ल्ड' बीएचओ प्रोजेक्ट की कोशिश की, लेकिन जब मैं इसे एक्स 86 के स्थान पर एक्स 64 में बना देता हूं, तो उसी समस्या को मिलता है।


ऐसा लगता है कि यह हर किसी के लिए काम नहीं करता है, इसलिए, मैं बताता हूँ कि मैंने यह काम करने के लिए क्या किया।

1) यहां से नमूना प्रोजेक्ट डाउनलोड करें: https://github.com/reinaldo13/ie-bho-extension

2) BHO.cs में RegisterBHO(...) BHO.cs RegisterBHO(...) विधि को BHO.cs

से:

RegistryKey ourKey = registryKey.OpenSubKey(guid);

सेवा मेरे:

  RegistryKey ourKey = registryKey.OpenSubKey(guid, true); //we want to write the registry

3) AnyCPU के लिए परियोजना को संकलित करें : प्रोजेक्ट गुण, प्लैटफॉर्म लक्ष्य के लिए AnyCPU चुनें।

4) इस तरह एक .bat बनाएँ, अपने रास्ते को अनुकूलित करें, और एक तरफ आपके आउटपुट डीएलएल की कॉपी करें:

 "c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" ieextension.dll /codebase
 "c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" ieextension.dll /codebase   

यह x86 और x64 के लिए डीएलएल रजिस्टर करेगा। दोनों संस्करण पंजीकृत होने के लिए अनिवार्य है अन्यथा आईई इसे पसंद नहीं करेगा (यह एक्सटेंशन 'असंगत' शिकायत करेगा) क्योंकि यह आपकी आईई सेटिंग्स के आधार पर इसे शुरू करने में सक्षम नहीं होगा। नोट मुझे लगता है कि आपके पास प्रत्येक संस्करण के लिए दो अलग-अलग फाइलें हो सकती हैं लेकिन .NET के AnyCPU की आवश्यकता नहीं है।

5) व्यवस्थापक के रूप में .bat चलाते हैं, यह तब होता है जब मैं ऐसा करता हूँ:

"c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" ieextension.dll /codebase
Microsoft .NET Framework Assembly Registration Utility version 4.7.2046.0
for Microsoft .NET Framework version 4.7.2046.0
Copyright (C) Microsoft Corporation.  All rights reserved.

RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can cause your assembly to interfere with other applications that may be installed on the same computer. The /codebase switch is intended to be used only with signed assemblies. Please give your assembly a strong name and re-register it.
Types registered successfully
"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" ieextension.dll /codebase
Microsoft .NET Framework Assembly Registration Utility version 4.7.2046.0
for Microsoft .NET Framework version 4.7.2046.0
Copyright (C) Microsoft Corporation.  All rights reserved.

RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can cause your assembly to interfere with other applications that may be installed on the same computer. The /codebase switch is intended to be used only with signed assemblies. Please give your assembly a strong name and re-register it.
Types registered successfully

6) चलाने के लिए iexplore.exe । यह आपकी सेटिंग (एक "होलए !!!" संदेश बॉक्स प्रदर्शित करता है) के आधार पर काम कर सकता है, लेकिन वैसे भी, मेनू / टूल्स / इंटरनेट विकल्प / प्रोग्राम / ऐड-ऑन प्रबंधित करें, मैं देख रहा हूं:

यदि एक्सटेंशन अक्षम है, तो आप इसे सक्षम करने में सक्षम होना चाहिए (और पुनः आरंभ करें)।

यदि यह काम नहीं करता है (डिफ़ॉल्ट रूप से यह नहीं होना चाहिए), सुनिश्चित करें कि आपने "उन्नत संरक्षित मोड * के लिए 64-बिट प्रक्रियाओं को सक्षम करें" (पुनः प्रारंभ करने की आवश्यकता है) की जांच की है। मेरे लिए संदेश गलत है, यह सिर्फ "64-बिट प्रक्रिया को सक्षम करें" कहें ...


Regasm.exe (विधानसभा पंजीकरण उपकरण) यहां

64 बिट के रूप में संकलित करने के लिए अपनी प्रोजेक्ट सेटिंग्स जांचें और साथ ही आईई संस्करण की जांच करें। और प्रशासक मोड में इसे चलाने के लिए।

आपका कोड सही है सिर्फ सिस्टम सेटिंग्स और संकलन विन्यास गड़बड़ कर रहे हैं,

इस सेटिंग को भी देखें https://answers.microsoft.com/en-us/ie/forum/ie11-windows_7/enable-64-bit-processes-in-ie-11/212270df-cc35-4e09-89e4 -13b9da1bb6a7? प्रमाणन = 1

उम्मीद है इससे आपकी सहायता होगी !!





bho