मेरे पास एक निष्पादन योग्य है जो 32-बिट विंडोज़ पर चलने पर ठीक काम करता है लेकिन 64-बिट विंडोज़ पर चलने पर टूट जाता है।
क्या कोई तरीका है जो मैं इसे 64-बिट मशीन पर 32-बिट मोड में चलाने के लिए मजबूर कर सकता हूं?
मेरे पास स्रोत कोड तक पहुंच नहीं है।
मेरे पास एक निष्पादन योग्य है जो 32-बिट विंडोज़ पर चलने पर ठीक काम करता है लेकिन 64-बिट विंडोज़ पर चलने पर टूट जाता है।
क्या कोई तरीका है जो मैं इसे 64-बिट मशीन पर 32-बिट मोड में चलाने के लिए मजबूर कर सकता हूं?
मेरे पास स्रोत कोड तक पहुंच नहीं है।
जवाबों:
आपको कितना तकनीकी उत्तर चाहिए? आप शायद कुछ एसडीके टूल के साथ एक्सई को हमेशा 32 बिट चलाने के लिए मजबूर कर सकते हैं, लेकिन इसके लिए थोड़ा काम करना पड़ता है।
इसका आसान उत्तर 32 बिट प्रोसेस से लॉन्च करना है (जैसे %SystemRoot%\SYSWOW64\cmd.exe
लॉन्च करने के लिए उपयोग )।
अधिक जटिल यह जांचना है कि यह किस प्रकार का है, फिर इसे स्वयं संशोधित करें। यहाँ पृष्ठभूमि समझना है कि भाषाओं से संकलित कोड जो सीधे विंडोज एपीआई के साथ काम करते हैं, डेवलपर द्वारा संकलन समय पर 32bit या 64bit के रूप में बनाए जाते हैं। इसके बाद स्रोत कोड पर वापस जाए बिना इसे बदला नहीं जा सकता।
हालांकि तेजी से अनुप्रयोगों को एक वर्चुअलाइजेशन परत के माध्यम से लिखा जाता है जो लेखन अनुप्रयोगों को आसान बनाता है। दो सामान्य हैं: .NET और जावा। मैं जावा के बारे में सुनिश्चित नहीं हूं सिवाय इसके कि समस्या को हल करने के साथ ही सही जावा रनटाइम स्थापित करने को मजबूर किया जाए।
.NET के लिए आप SDK टूल्स का उपयोग कर सकते हैं:
corflags myExe.exe
:। .NET SDK से एक .NET असेंबली के हेडर को पढ़ने के लिए एक यूटिलिटी का उपयोग करते हुए, एक exe के लिए कुछ इस तरह लौटेगा:संस्करण: v4.0.30319 सीएलआर हैडर: 2.5 PE: PE32 CorFlags: 0x20003 ILONLY: 1 32BITREQ: 0 32BITPREF: 1 हस्ताक्षरित: 0
32BITREQ
मुझसे कहता है यह है AnyCPU
क्योंकि 32 बिट की आवश्यकता नहीं है।
corflags
इसके /32BITREQ+
विकल्प का उपयोग करें ।%SystemRoot%\SYSWOW64\cmd.exe
और यह उसी तरह से विफल रहा - एक त्रुटि संदेश दिखा रहा है - और जब मैं टास्कमैनर में जांच करता हूं तो मेरी एक्सई प्रक्रिया 32-बिट प्रक्रिया के रूप में नहीं दिखाई देती
SYSWOW64\cmd.exe
अभी भी एक प्रबंधित AnyCPU EXE लॉन्च करने से यह 64-बिट प्रक्रिया के रूप में चलाया जा सकता है (मैंने इसे अभी आज़माया है)।
वास्तव में इसे समायोजित करने का एक आसान तरीका है (दीर्घकालिक समाधान नहीं)।
अनुप्रयोग "corflags.exe" को \ windows \ system32 फ़ोल्डर में ड्रॉप करें। व्यवस्थापक के रूप में एक कमांड लाइन खोलें और टाइप करें ...
corflags "exe का पथ और नाम" / 32BITPREF32 +
यह एप्लिकेशन को 64-बिट के बजाय 32-बिट प्रक्रिया के रूप में चलाने के लिए मजबूर करेगा।