سؤال

أحاول تشغيل قابل للتنفيذ 64 بت (java.exe) من تطبيقنا 32 بت .NET. انا استخدم Process الطبقة والإلغاء cmd /c <command name> من أجل دعم جميع الأوامر الممكنة (مثل dir, cd إلخ).

المشكلة هي أنه على جهازي قمت بتثبيت إصدار 64 بت من JRE و Java.exe متاح فقط من C:\Windows\System32 مجلد (x64). لقد حاولت بدءا من الإصدار 64 بت cmd.exe بالاتصال C:\Windows\System32\cmd.exe ولكن يتم إعادة توجيهها إلى SysWOW64 بسبب عملية الاتصال كونها 32 بت.

هل هناك أي شيء آخر يمكنني القيام به للحصول على هذا للعمل؟

تعديل بالكامل cmd /c الشيء قليلا من الرنجة الحمراء. إنه ليس جزءا من المشكلة، والكوني قادر على تشغيل 64 بت التنفيذية هو.

هل كانت مفيدة؟

المحلول

يمكنك تعطيل إعادة توجيه نظام الملفات مؤقتا حول المكالمة إلى Process.Start، فإن API المناسب إلى P / Invoke wow64disablewow64fsrection. و wow64revertwow64fsrection..

خيار آخر هو استخدام٪ windir٪ sysnative، وهو متاح على نظام التشغيل Windows Vista وما فوق.

نصائح أخرى

ما تفعله هو استخدام٪ windir٪ sysnative لحل 64 بت cmd.exe ثم قم بتشغيل برنامجك 64 بت آخر عبر خيار سطر الأوامر "/ C".

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:\>

فقط في حالة قد يساعد ذلك ..http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx.

لاحظ أنه إذا حدث التطبيق لإظهار موجه UAC، فلن يحدث إعادة التوجيه. وكذلك بعض المجلدات معفاة من إعادة التوجيه.

يبدو أن "SySnative" لديه بعض العيوب.

مثال: عندما تبدأ PowerShell.exe عبر C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe بعض cmdlets مثل Get-AppxProvisionedPackage" and "Get-WindowsCapability لا تعمل / رمي الاستثناءات:

Get-AppXProvisionEdPackage: "خطأ في إعداد الدليل الحالي إلى" C: Windows Sysnative WindowsPowersHell V1.0 ": جزء من المسار" C: Windows Sysnative WindowsPowersHell V1.0 "تعذر العثور عليه"

(ترجمة من الألمانية "fehler beim festlegen des aktuellen verzeichnisses auf" c: windows sysnative windowspowershell v1.0 ": ein teil des pfades" c: windows sysnative windowspowershell v1.0 "konnte nicht gefunden werden. ")

قد تكون هناك مشاكل مماثلة في تشغيل عمليات أخرى من PowerShell (كلما كان دليل المصدر في العملية مهم؟) ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top