2010-01-05 8 views
24

मैं अपने 32-बिट .NET अनुप्रयोग से 64 बिट निष्पादन योग्य (java.exe) चलाने की कोशिश कर रहा हूं। मैं सभी संभावित आदेशों (जैसे dir, cd आदि) का समर्थन करने के लिए Process कक्षा का उपयोग कर रहा हूं और cmd /c <command name> का आह्वान कर रहा हूं।32-बिट प्रक्रिया से 64-बिट प्रक्रिया को कैसे शुरू करें

समस्या यह है कि मेरी मशीन पर मैंने जेआरई के 64-बिट संस्करण को स्थापित किया और जावा.एक्सई केवल C:\Windows\System32 फ़ोल्डर (x64) से उपलब्ध है। मैंने C:\Windows\System32\cmd.exe पर कॉल करके cmd.exe के 64 बिट संस्करण को स्पष्ट रूप से शुरू करने का प्रयास किया है, लेकिन कॉलिंग प्रक्रिया 32 बिट होने के कारण इसे SysWOW64 पर रीडायरेक्ट किया जाता है।

क्या यह काम करने के लिए मैं और कुछ कर सकता हूं?

EDIT संपूर्ण cmd /c चीज एक लाल हेरिंग का थोड़ा सा है। यह समस्या का हिस्सा नहीं है, 64 बिट निष्पादन योग्य चलाने में सक्षम है।

+0

इस उत्तर इस मामले में अधिक प्रकाश लाने सकता है: http://stackoverflow.com/questions/9466850/the-specified-procedure-could-not-be-found-after-disabling-wow64-redirection –

+0

यह उत्तर मदद कर सकता है: http://stackoverflow.com/questions/9466850/the- निर्दिष्ट-procedure-could-not-be-found-after-disabling-wow64-redirection –

उत्तर

28

आप प्रक्रिया के लिए कॉल के चारों ओर फाइल सिस्टम रीडायरेक्शन अस्थायी रूप से अक्षम कर सकते हैं। प्रारंभ करें, पी/Invoke के लिए उपयुक्त एपीआई Wow64DisableWow64FsRedirection और Wow64RevertWow64FsRedirection हैं।

एक और विकल्प% windir% \ sysnative का उपयोग करना है, जो कि विंडोज विस्टा और ऊपर उपलब्ध है।

+0

डरावना लगता है, मैं इसे जाने दूंगा:) –

+0

वास्तव में यह काम करता है। मुझे विश्वास नहीं है कि यह करने का आधिकारिक तरीका है - http://msdn.microsoft.com/en-us/library/aa365743%28VS.85%29.aspx - एमएसडीएन इस उद्देश्य का उपयोग इस उद्देश्य के लिए करता है। –

+0

कूल, sysnative भी काम किया, मैं शायद अंतिम संस्करण में इसका उपयोग करेंगे। –

2

शायद ज़रुरत पड़े इस मदद कर सकता है .. http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx

ध्यान दें कि यदि आवेदन यूएसी संकेत दिखाने की प्रकट होता है, तो पुनर्निर्देशन नहीं होगी। और कुछ फ़ोल्डरों को पुनर्निर्देशन से मुक्त किया जाता है।

9

आप क्या करते हैं आप 64-बिट CMD.EXE को हल करने के लिए% windir% \ sysnative का उपयोग करते हैं और फिर आप अपना अन्य 64-बिट प्रोग्राम "/ c" कमांड लाइन विकल्प के माध्यम से लॉन्च करते हैं।

+1

बहुत बहुत धन्यवाद! उपयोग को और स्पष्ट करने के लिए: सी: \ विंडोज \ Sysnative \ cmd.exe प्रभावी ढंग से C: \ Windows \ System32 में पुनर्निर्देशन के बिना प्रभावी रूप से चलाएगा। और जानकारी: http://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm –

+0

sysnative-फ़ोल्डर Windows10 – MHolzmayr

+0

में मौजूद नहीं है और न ही विंडोज 7 या 8.1 –

2
c:\>set proc 
PROCESSOR_ARCHITECTURE=x86 
PROCESSOR_ARCHITEW6432=AMD64 
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 70 Stepping 1, GenuineIntel 
PROCESSOR_LEVEL=6 
PROCESSOR_REVISION=4601 

c:\>c:\windows\sysnative\cmd 
Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

c:\>set proc 
PROCESSOR_ARCHITECTURE=AMD64 
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 70 Stepping 1, GenuineIntel 
PROCESSOR_LEVEL=6 
PROCESSOR_REVISION=4601 

c:\> 
संबंधित मुद्दे