PDA

View Full Version : سوال: نحوه تشخیص 32 بیتی یا 64 بیتی سیستم عامل



amir200h
چهارشنبه 23 مرداد 1392, 10:33 صبح
سلام به همه.
من میخوام بدونم از کجا میشه فهمید سیستم عامل کاربر 32بیتیه یا 64بیتی؟
ممنون میشم کمک کنین

nunegandom
چهارشنبه 23 مرداد 1392, 11:07 صبح
Environment.Is64BitProcess.ToString()

مهرداد صفا
چهارشنبه 23 مرداد 1392, 11:10 صبح
با سلام.
خصوصیت Environment.Is64BitOperatingSystem (http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.ENVIRONMENT.IS64BITOPERATINGSYSTEM%29 ;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLan g-CSHARP%29&rd=true) مشخص می کند:

MessageBox.Show(System.Environment.Is64BitOperatin gSystem.ToString());

amir200h
چهارشنبه 23 مرداد 1392, 11:16 صبح
والا همچین چیزی نبود!!!!!

setareh masompoor
چهارشنبه 23 مرداد 1392, 11:25 صبح
if (IntPtr.Size == 4)
{
txt_num.Text = "32";
}
else if (IntPtr.Size == 8)
{
txt_num.Text = "64";
}

این کد فکر کنم کارتو راه بندازه

amir200h
چهارشنبه 23 مرداد 1392, 11:31 صبح
راه که انداخت و واقعا ممنونم. ولی میشه کدو توضیح بدی؟

مهرداد صفا
چهارشنبه 23 مرداد 1392, 14:56 عصر
والا همچین چیزی نبود!!!!!
با سلام.
این خصوصیت از .net 4.0 به بعد اضافه شده.

مهرداد صفا
چهارشنبه 23 مرداد 1392, 15:05 عصر
راه که انداخت و واقعا ممنونم. ولی میشه کدو توضیح بدی؟

به دلیل تفاوت مدیریت حافظه در ویندوز های 32 بیتی و 64 بیتی، اندازه اشاره گر(IntPtr( در Win32 برابر با 4 بایت یا 32 بیت و در win64 برابر با 8 بایت یا 64 بیت است.
از آنجا که پردازش های 32 بیتی هم می توانند در win64 اجرا شوند این روش 100 درصد مطمئن نیست.

danialafshari
چهارشنبه 23 مرداد 1392, 15:35 عصر
MessageBox.Show(System.Environment.Is64BitOperatin gSystem.ToString());
فکر نمیکنم مشکلی داشته باشه
اگر 32 باشه مقدار False و اگر 64 باشه مقدار True رو بر میگردونه

amir200h
چهارشنبه 23 مرداد 1392, 15:46 عصر
فکر نمیکنم مشکلی داشته باشه
اگر 32 باشه مقدار False و اگر 64 باشه مقدار True رو بر میگردونه
أآخه پروژه م یا .net 3.5 ایجاد شده و این متد رو نداره. آیا راه حل بهتری سراغ ندارین؟
آیا میشه پروژه رو به .net 4 تغییر داد؟

nunegandom
چهارشنبه 23 مرداد 1392, 16:03 عصر
دو راه حل به ذهنم میرسه:
http://www.windows-commandline.com/find-windows-os-version-from-command/
برو روی پروژه (تویه سلوشن اکسپلورر) راست کلیک، گزینه پروپرتیز بعدش Target framework = 4 میکنی و تمام

مهرداد صفا
چهارشنبه 23 مرداد 1392, 17:06 عصر
اگر مقدار این کلید رجستری را بررسی کنید، خواهید دید نوع سیستم عامل (X86|X64) در آن وجود دارد:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\BuildLabEX