امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

4 دلیل برای وجود دو پوشه Program Files در ویندوز

همه شما وقتی ویندوز نسخه 64 بیتی نصب میکنید در درایو C یک فولدر به نام Program Files (x86) ایجاد میشود به نظرتان دلیل آن چیست؟در این مقاله بر آن شده ایم تا دلیل این مسئله را به طور وضوح بیان کنیم تا برای خیلی از دوستان رفع ابهام شود.خب شاید میدانید که ویندوز های 64 بیتی برای نرم افزار های 64 بیتی استفاده میشوند و در فولدر Program Files ذخیره میشوند و در مقابل ویندوز های 32 بیتی برای نرم افزار های 32 بیتی استفاده میشوند و در فولدر Program Files (x86) ذخیره میشوند.اما با این اوصاف در حقیقت چرا این ها لازم هستند؟

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو

دلیل اصلی ساخت اپلیکشین های 32 بیتی این است که نرم افزار های 32 بیتی حتی از وجود و کار کردن نرم افزار های 64 بیتی اطلاعی ندارند.در حقیقت وجود دایرکتوری Program Files (x86) ضروری نیست بلکه میتواند برای سازمان دهی دادن به اپلیکیشن هایی که از DLL های 32 بیتی استفاده میکنند باشد.

اپلیکیشن های 32 بیتی قادر به یافتن و اجرای DLL های 64 بیتی نمیباشند و اگر سعی بر اجرای آن کند با خطا مواجه میشود.به همین دلایل مایکروسافت بر آن شد تا یک دایرکتوری جداگانه برای اپلیکیشن های 32 بیتی درون سیستم عامل قرار دهد.در واقع تنها راه جایگزین راهی میتواند باشد که هر کجا که اپلیکیشن های 32 بیتی وجود نداشتند فایل های اجرایی اپلیکیشن 64 بیتی مخفی شوند ماننددایرکتوری bin64.خب پاسخی کوتاه به این پرسش ها دادیم حال برویم کمی فنی تر و از دید برنامه نویسی این مسئله را تحلیل کنیم...

دلیل اول

فولدر ها برای دسته بندی کردن فایل ها در نوع خود بسیار جذاب و مفید میتوانند باشند.اصلا یک سئوال اینکه ما چرا به فولدر ها نیاز داریم؟خوب آنها میتوانند در سفارشی سازی و دسته بندی فایل ها و دایرکتوری های مختلف به ما کمک کنند که این ها در امر یافتن فایل ها و فولدر های خاص در یک ماشین که دارای ساختار خاص خودش است خیلی مفید میتواند واقع شود.

دلیل دوم

تفکیک کردن اطلاعات بر اساس نوع و ساختار منطقی خودش بسیار جذاب و مفید خواهد بود.ساختار منطقی دادن به دایرکتوری ها کمک شایانی به پی بردن ساختار و مکانیزم کاری آن فایل سیستم خواهد داشت که مورد محبوبیت بسیاری از برنامه نویسان است.مثلا شما میخواهید بخشی از اطلاعات how باشند و برخی دیگر به with تقسیم بندی شده باشند.این اسامی در فایل سیستم ها مشهور است. ما فولدر هایی برای اپلیکیشن ها(logic) و فولدر هایی برای valuable هایمان(data) داریم.که شامل موارد زیر هستند:

*Logic*
* %WINDIR%
* %PROGRAMFILES%
* %PROGRAMFILES(x86)%
*Data*
* %PROGRAMDATA%
* %HOMEDRIVE%%HOMEPATH%

دلیل سوم

Installer ها امروزه بصورت magic نیستند.ما اغلب از برنامه های کوچک و کم حجم برای نصب برنامه های بزرگ و حجیم استفاده میکنیم.که ما(برنامه نویسان) در اصطلاح به آنها Programs installers میگوییم.installer ها توسط برنامه نویسان نوشته میشود و مانند هر اپلیکیشن دیگری که وجود دارد میباشد.فرض کنید برنامه نویسی با سیستم فعلی رو به رو شده است:

  • Program Files folder

برنامه نویس یا توسعه دهنده نرم افزار دو Installer را نگهداری میکند.یکی برای نسخه 32 بیتی اپلیکیشن و دیگری برای نسخه 64 بیتی اپلیکیشن اش.Installer سی و دو بیتی در مسیر C:\Program Files\App\ نوشته میشود و installer شصت و چهار بیتی در مسیر C:\Program Files\App\sixtyfour\ نوشته خواهد شد.

  • Program Files folders

برنامه نویس یک Installer را نگهداری میکند.Installer همیشه در مسیر %PROGRAMFILES% نوشته خواهد شد.در بسیاری از مواقه شما با متغیر های محیطی مسیر نوشته شدن آن را تغییر نمیدهید.با این وجود هر چیزی که نصب شد در محل خودش ذخیره میشود و به صورت اتوماتیک محلش مشخص میشود.

دلیل چهارم

این دلیل هم میتواند شامل ثبات و پایداری نرم افزار ها و اپلیکیشن ها باشد که براحتی میتوان با توجه به 32 بیتی و 64 بیتی بودن آن اپلیکیشن آنرا در سیستم عامل محل یابی کرد و براحتی آنرا پیدا کرد.این منطقی است که چیز های مشابه در فولدرها یا بعبارتی محل مشابه قرار میگیرد.بعبارتی اپلیکشین های 32 بیتی در محل خودش و اپلیکیشن های 64 بیتی در محل مخصوص به خود باید قرار بگیرد.

من هنوز از آن استفاده نکردم.آن به نظر بی مصرف است!

شما همیشه باید یک چیز را خوب در نظر داشته باشید.افراد فوق العاده احمق هستند.این افراد شامل کاربران عادی،کاربران حرفه ای و مخصوصا برنامه نویس هاست.به همین دلیل است که ما به file system redirection نیاز داریم تا کامپیوترمان را قابل استفاده کند.برنامه نویس ها فقط از مسیر C:\Windows\system32\awesome.dll برنامه ها را بارگزاری میکنند و برایشان مهم نیست که آن نرم افزار 32 بیتی است یا 64 بیتی.آنها اغلب سعی بر این دارند که از DLLهای 64 بیتی را استفاده کنند، مشکلی نیست..به سادگی Crash میشود!

آنها میدانند از کجا DLL ها را پیدا کنند! ...C:\Program Files\Microsoft\Office\14.0\wizards.dll و یک Crash دیگر!! همه این درخواست ها توسط اپلیکشین 32 بیتی به قسمت هایی از این نسخه نرم افزار redirection(هدایت) میشوند تا از crash شدن نرم افزار جلوگیری شود.ما نیاز به تعمیر برخی از اسامی فولدر ها برای سیستم داریم.اگر هیچ ساختار دایرکتوری برای پشتیبانی از این redirection وجود نداشته باشد چگونه میتوانید از آن استفاده کنید؟

بسیار خب! اما چرا ما از مسیر C:\Program Files\x86\ استفاده نمیکنیم؟ جوابی برای این سئوال ندارم! چه مشکلی پیش می آید اگر من عمدا از مکانیزم redirection استفاده نکنم و همه چیز در مسیر \C:\Program Files نصب شود؟ در بیشتر مواقع هیچ اتفاق خاصی نمی افتد.از آنجا که سایر اپلیکیشن ها مسیر قرار گیری تنظیمات و اطلاعات شان ثابت خواهد بود این مورد استثناء به شمار می آید.مکانیزم WoW64 یک جزء از سیستم عامل ویندوز است که میتواند DLL های اپلیکیشن های 32 بیتی را روی ویندوز های 64 بیتی اجرا کند.WoW64 شامل سه DLL میباشد که عبارتند از:

  • Wow64.dll
  • Wow64win.dll
  • Wow64cpu.dll

امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

امیرحسین کریم پور ، مدیر ارشد توسینسو ، متخصص شبکه ، تخصص در حوزه سیستم عامل های کلاینت و سرور مایکروسافت و سرویس های مربوطه ، سیستم عامل لینوکس و... ، سابقه کار با سازمان ها و شرکت های مختلف در زمینه سرویس های مایکروسافت در قالب پروژه ، مشاوره و آموزش. علاقه مند به حوزه امنیت اطلاعات و تست نفوذ سنجی

نظرات