لماذا يستخدم نظام التشغيل Windows Vista 64 بت cmd.exe 32 بت بشكل افتراضي؟(خاص بالجهاز)

StackOverflow https://stackoverflow.com/questions/373351

سؤال

الوضع:

أحتاج إلى تحويل بيئة التطوير الحالية لدينا من Windows XP 32 بت إلى Windows Vista 64 بت (*).بطبيعة الحال، لقد واجهت الكثير من الأماكن في نظام البناء الخاص بنا حيث كانت المسارات المضمنة تمثل مشكلة (على سبيل المثال."C:\Program Files"يصبح"C:\Program Files (x86)").لحسن الحظ، هناك %ProgramFiles% متغير البيئة الذي يقوم بتعيين الدليل المناسب بناءً على العملية المصدر (32 بت أو 64 بت).لذلك قمت بتحديث البرامج النصية للبناء باستخدام %ProgramFiles%, ، وكنت على يقين من أنها ستكون نهاية ذلك.

يتم استدعاء بيئة البناء من سطر الأوامر (C:\Windows\System32\cmd.exe).

المشكلة:على جهاز واحد محدد (أي جهاز التطوير الخاص بي الذي يعمل)، اتضح ذلك C:\Windows\System32\cmd.exe هي في الواقع عملية 32 بت، لذلك تجد البرامج النصية ملف x86 نسخة من Program Files الدليل وكل شيء يعمل بشكل رائع.

على كل جهاز 64 بت آخر يمكنني العثور عليه (بما في ذلك جهازي المنزلي)، C:\Windows\System32\cmd.exe هي النسخة 64 بت، والنسخة 32 بت موجودة C:\Windows\SysWow64\cmd.exe.لذلك لا تستطيع البرامج النصية للبناء العثور على أي شيء يبحثون عنه وتفشل.

أفهم الآن أن 32 بت cmd.exe يجب أن يتم استدعاؤه بشكل صريح إذا كان هذا هو ما تحتاجه، وافتراضيًا تحصل على 64 بت cmd.exe.حالة نموذجية من WORKSFORME...

السؤال هو, ماذا حدث للجهاز حيث هذا غير صحيح؟لماذا أحصل على 32 بت cmd.exe بشكل افتراضي على جهاز واحد ولكن ليس على الأجهزة الأخرى؟وفي جميع الحالات أنا أنفذ صراحة C:\Windows\System32\cmd.exe من Start|Run القائمة ولكن الحصول على نتائج مختلفة على جهاز واحد فقط.جميعهم يشغلون نفس الإصدار من نظام التشغيل Vista 64 بت.

أي أفكار أو البصيرة؟

(*) أرجو أن تتقبلوا أنني يجب افعل هذا.ليس لدي الحرية في أن أقول لماذا أنا أفعل هذا.من المحتمل أن تنجح إعادة تثبيت نظام التشغيل وكل شيء من البداية، لكنه بالتأكيد مبالغة.بالإضافة إلى ذلك، كان من الصعب إقناع قسم تكنولوجيا المعلومات لدينا بتقديم أجهزة Vista!

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

المحلول 2

لقد وجدت المشكلة أخيرًا، وكما هو متوقع فهي بسيطة جدًا:خطأ المستخدم.يقوم Explorer (وهو في حد ذاته عملية 64 بت على نظام التشغيل Windows Vista 64 بت) بتشغيل موجهات الأوامر 64 بت بشكل افتراضي.إذا كنت تريد 32 بت CMD.EXE, ، يجب عليك الإشارة بوضوح C:\Windows\SysWoW64\CMD.EXE.

السبب وراء نجاح هذا الأمر على نظامي هو أنني أستخدم Far Manager في معظم استخدامات سطر الأوامر، وهو 32 بت (وبالتالي يقوم بتشغيل موجهات أوامر 32 بت).عندما قمت بالتحقق، لا بد أنني خلطت بين نافذة 32 بت ونافذة 64 بت (بعد كل شيء تبدو متشابهة!) وطرحت سؤالاً غبيًا.

يموت في سينتي، المشكلة مع %ProgramFiles(x86)% هو أنه غير موجود على نظام التشغيل Windows Vista 32 بت، لأن ذلك كان سيكون أسهل حقًا.

آه، لا يوجد شيء مثل النشر العام لجعل نفسك أضحوكة ...:)

نصائح أخرى

إذا قمت بتشغيل cmd من عملية 32 بت، فستحصل على cmd 32 بت بسبب إعادة توجيه الملف (http://msdn.microsoft.com/en-us/library/aa384187.aspx).هل تحصل على الإصدار 32 بت من CMD عند تشغيله من Explorer؟

cmd.exe يتم تشغيله من داخل قائمة ابدأ على كلا الجهازين.النسخ الدقيق:

  • انقر فوق ابدأ الجرم السماوي
  • يكتب "cmd"، تظهر مباراة واحدة فقط (c:\windows\system32\cmd.exe)
  • أطلقها.

على جهاز العمل الخاص بي، يقوم بتشغيل الإصدار 32 بت (كما هو موضح من خلال مدير المهام، فقد تم تشغيله *32 ملحق بالاسم في Processes فاتورة غير مدفوعة).على جميع أجهزة Vista 64 الأخرى التي جربتها، يؤدي هذا إلى تشغيل الإصدار 64 بت من cmd, ولا أستطيع العثور على تفسير منطقي لهذا السلوك.

لم أتحقق مما إذا كان explorer.exe كان نفسه 32 بت أو 64 بت على الجهاز المتأثر، ربما يكون هذا مرتبطًا ...شكرا للتلميح.

بدلاً من %ProgramFiles%, ، أليس هناك أ %Programfiles(x86)% الذي يذهب دائمًا إلى المكان الذي تريده، بغض النظر عن ملف cmd.exe الذي يتم تشغيله؟تتمتع جميع أنظمة التشغيل Windows XP 64 بت بذلك؛إسمح لي لعدم أخذ الوقت الكافي لتشغيل نظام Vista.

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