কেন 64৪-বিট উইন্ডোজের একটি পৃথক "প্রোগ্রাম ফাইল (x86)" ফোল্ডার দরকার?


178

আমি জানি যে উইন্ডোজের 64৪-বিট সংস্করণে "প্রোগ্রাম ফাইলগুলি" ফোল্ডারটি -৪-বিট প্রোগ্রামের জন্য এবং "প্রোগ্রাম ফাইল (x86)" ফোল্ডারটি 32-বিট প্রোগ্রামের জন্য, তবে কেন এটি এমনকি প্রয়োজনীয়?

"প্রয়োজনীয়" দ্বারা, আমার অর্থ এই নয় "মাইক্রোসফ্ট কেন অন্য কোনও ডিজাইনের সিদ্ধান্ত নিতে পারল না?" অবশ্যই তারা থাকতে পারে। বরং আমার অর্থ, "কেন, 64৪-বিট উইন্ডোজের বর্তমান ডিজাইনটি দেওয়া হয়েছে, 32-বিট প্রোগ্রামগুলিতে 64৪-বিট প্রোগ্রামগুলি থেকে আলাদা একটি শীর্ষ স্তরের ফোল্ডার থাকা আবশ্যক?" অন্য একটি উপায় রাখুন, "যদি আমি কোনওভাবে পুনঃনির্দেশের ব্যবস্থাটি এড়িয়ে চলে এবং সবকিছুকে বাস্তবের কাছে ইনস্টল করতে বাধ্য করি তবে কী ভুল হবে C:\Program Files\?"

সুপার ব্যবহারকারী এবং অন্য কোথাও প্রচুর প্রশ্ন রয়েছে যে "একটি ৩২-বিট প্রোগ্রামের জন্য, একটি 64৪-বিট প্রোগ্রামের জন্য", তবে এর কারণটি আমি খুঁজে পাচ্ছি না none আমার অভিজ্ঞতা থেকে, 32-বিট প্রোগ্রামটি সঠিক জায়গায় ইনস্টল করা আছে কি নেই তা মনে হচ্ছে না।

উইন্ডোজ কি কোনওভাবে "প্রোগ্রাম ফাইল (x86)" এর বাইরে চলমান একটি প্রোগ্রামের কাছে নিজেকে আলাদাভাবে উপস্থাপন করে? "প্রোগ্রাম ফাইলগুলি (x86)" এ "প্রোগ্রাম ফাইল" এর পরিবর্তে ইনস্টল হওয়া কোনও প্রোগ্রামের জন্য ঠিক কী আলাদা তা বর্ণনা করে? আমি মনে করি বৈধ প্রযুক্তিগত কারণ ছাড়াই মাইক্রোসফ্ট একটি নতুন ফোল্ডার প্রবর্তন করবে এমনটি অসম্ভব।


13
আপনার প্রশ্নের উত্তর না দিয়ে, আমি জিজ্ঞাসা করব - আপনি কীভাবে \ প্রোগ্রাম ফাইলগুলি \ সাধারণ ফাইলগুলি পরিচালনা করবেন?
সাগমুর

8
ওয়ান-লাইনারের উত্তর (এবং সেইজন্য একটি মন্তব্য): যেহেতু আপনি সহজেই যেকোন ফোল্ডার থেকে তার আর্কিটেকচারটি না জেনে কোনও অ্যাপ্লিকেশন চালাতে পারবেন, তবে স্পষ্টভাবে এই বিচ্ছেদের কোনও বাধ্যতামূলক কারণ নেই । উভয় আর্কিটেকচার সহ অ্যাপ্লিকেশনগুলির ডাবল ইনস্টল সমর্থন করা সুবিধার বিষয় । কিছু ক্ষেত্রে এটি একটি পার্থক্য তৈরি করে কারণ তারা অগত্যা সহজ পুনরুদ্ধার করে না। প্রধান সমস্যাটি হ'ল 32 বিট অ্যাপ্লিকেশনগুলি 64 বিট ডেল লোড করতে পারে না, তাই আপনি একই জায়গায় উভয় সংস্করণ ইনস্টল করতে পারবেন না। অন্য বিকল্পটিতে প্রতিটি অ্যাপ্লিকেশনের জন্য দুটি "বিন" ফোল্ডার রয়েছে।
Sklivvz

1
@ সিনিটেক এমনকি আমার কাছে x x বাইনারি থাকার জন্য (x86) এর অধীনে প্রোগ্রাম ইনস্টল করা ছিল .. এটি কখনও কখনও ভয়ঙ্কর।
sinni800

10
আমি সবসময়ই ভাবছিলাম যে মাইক্রোসফ্ট কেন "" লিগ্যাসি "প্রোগ্রাম ফাইল ডিরেক্টরিটিকে প্রোগ্রাম ফাইলগুলিতে (x86) না সরানোর পরিবর্তে" প্রোগ্রাম ফাইল (x64) "এ 64৪-বিট প্রোগ্রাম রাখেনি
লরেন্স

30
64 / 32bit বিভেদ সম্পর্কে বাস্তব জগাখিচুড়ি যে / উইন্ডোজ / system32, 64bit বিষয়বস্তু রয়েছে যখন / উইন্ডোজ / SysWOW64 32bit কাপড় রয়েছে ...
অকর্মা

উত্তর:


92

সংক্ষিপ্ত উত্তর: 32-বিট অ্যাপ্লিকেশনগুলি on৪-বিট অ্যাপ্লিকেশনগুলিতে কুরুচিপূর্ণ নিয়ম চাপিয়ে না দিয়ে একইভাবে কাজ করা চালিয়ে যাওয়ার বিষয়টি নিশ্চিত করতে যা স্থায়ী গণ্ডগোল সৃষ্টি করে।

এটি র কোন দরকার নাই. এটি অন্যান্য সম্ভাব্য সমাধানগুলির চেয়ে আরও সুবিধাজনক যেমন 32-বিট ডিএলএল এবং এক্সিকিউটেবলকে 64-বিট ডিএলএল এবং এক্সিকিউটেবলের থেকে পৃথক করার জন্য প্রতিটি অ্যাপ্লিকেশনকে নিজস্ব উপায় তৈরি করতে প্রয়োজন।

মূল কারণটি 32-বিট অ্যাপ্লিকেশনগুলি তৈরি করা যা এমনকি 64-বিট সিস্টেমগুলি "কেবলমাত্র" কাজ করে না তা জানে না এমনকি অ্যাপ্লিকেশনগুলি দেখতে লাগতে পারে এমন জায়গায় 64-বিট ডিএলএল ইনস্টল করা থাকলেও। একটি 32-বিট অ্যাপ্লিকেশন একটি 64-বিট ডিএলএল লোড করতে সক্ষম হবে না, সুতরাং 32-বিট অ্যাপ্লিকেশনটি (এটি পূর্ব-তারিখের 64-বিট সিস্টেমগুলির হতে পারে এবং সুতরাং 64-বিট ফাইলগুলির কোনও ধারণা নেই) তা নিশ্চিত করার জন্য একটি পদ্ধতি প্রয়োজন ছিল এমনকি উপস্থিত রয়েছে) একটি 64-বিট ডিএলএল খুঁজে পাবে না, এটি লোড করার চেষ্টা করুন, ব্যর্থ হোন এবং তারপরে একটি ত্রুটি বার্তা উত্পন্ন করুন।

এর সহজ সমাধানটি ধারাবাহিকভাবে পৃথক ডিরেক্টরি। প্রকৃতপক্ষে একমাত্র বিকল্প হ'ল প্রতিটি -৪-বিট অ্যাপ্লিকেশনটি তার এক্সিকিউটেবল ফাইলগুলিকে "লুকিয়ে" রাখার জন্য কোথাও 32-বিট অ্যাপ্লিকেশনটি দেখতে না পারা, যেমন bin64application অ্যাপ্লিকেশনটির ভিতরে ডিরেক্টরি। তবে এটি কেবলমাত্র উত্তরাধিকার অ্যাপ্লিকেশনগুলিকে সমর্থন করার জন্য 64৪-বিট সিস্টেমে স্থায়ী কদর্যতা আরোপ করবে।


52
একই সিস্টেমে 32-বিট এবং 16-বিট প্রোগ্রামের জন্য তাদের এই হুপগুলির মধ্য দিয়ে ঝাঁপিয়ে পড়েনি। আমি কখনও কখনও ProgramFiles (16)এরকম কিছু দেখেছি বলে মনে পড়ে না । এছাড়াও, 32-বিট প্রোগ্রামটি ঠিক কীভাবে "64-বিট ডিএলএল খুঁজে পেতে এবং এটি লোড করার চেষ্টা করবে"? কোন প্রোগ্রামগুলি এলোমেলো ডিএলএল শিকারের জন্য যায় %programfiles%? যদি এটি ভাগ করা ডিএলএল হয়, তবে এটি উইনএসএক্সএসে যায়; যদি এটি ভাগ না করা হয়, তবে প্রোগ্রামার তাদের নিজস্ব ডিএলএলগুলি পরিচালনা করতে পারে। এটি সম্পর্কে অংশটি প্রোগ্রামারদের পক্ষে সুবিধার্থে যদিও এটি যুক্তিযুক্ত।
Synetech

30
আইআইআরসি উইন 3.1 এর কোনও প্রোগ্রাম ফাইল ডিরেক্টরি নেই (বা বেশিরভাগ অ্যাপ্লিকেশন এটিকে উপেক্ষা করে); ফলস্বরূপ প্রোগ্রাম ফাইলগুলিতে স্টাফ সন্ধান করার জন্য কোনও লিগ্যাসি উইন 16 অ্যাপ থাকবে না। পরিবর্তে আইআইআরসি শেয়ার করা লাইব্রেরিগুলি প্রায়শই উইন্ডো ফোল্ডারে নিজেই কোথাও প্লোক করা হত। উইন 32 উইন্ডোজ \ সিস্টেম এবং উইন্ডোজ \ সিস্টেম 32 থাকা এটির একটি নিদর্শন।
ড্যান নীলি

15
উইন্ডোজ ৩.১ দীর্ঘ ফাইলের নাম সমর্থন করে না, সুতরাং এটি কোনও 'প্রোগ্রাম ফাইল' ফোল্ডারটি সক্ষম করতে পারত না।
ডার্থ এগ্রিগিয়াস

14
@ জারোডরোবারসন: একেবারে উল্টো, কারণ মাইক্রোসফ্ট পিছনের দিকের সামঞ্জস্যকে অত্যন্ত উচ্চমূল্য দেয়।
ডেভিড শোয়ার্টজ

24
@ জারোদ: প্রকৃতপক্ষে, প্রতিটি বিকাশকারী জানেন, মাইক্রোসফ্ট পিছনের দিকের সামঞ্জস্যকে খুব বেশি মূল্য দেয় । আক্ষরিক অর্থে প্রতিটি এপিআইয়ের তাদের উত্তরাধিকার পদ্ধতি রয়েছে যা তারা অপসারণ করতে অস্বীকার করে এবং প্রায়শই গুরুতর ত্রুটিগুলি তারা ঠিক করতে অস্বীকার করে, কারণ তারা সেই এপিআই-র জন্য লিখিত পুরানো প্রোগ্রামগুলি ভঙ্গ করতে ভয় পান। বেশিরভাগ এপিআই-র ক্ষেত্রেও একই কথা, তবে মাইক্রোসফ্টের অস্তিত্বের কাছাকাছি কোথাও নয়।
ব্লুরাজা - ড্যানি প্লেফুঘুফুট

65

এটি নিজেই ওভাররাইট না করে কোনও অ্যাপ্লিকেশনটির 32 বিট এবং 64 বিট উভয়ই ইনস্টল করতে দেয় allows


পরের দিন এই উত্তর এবং মন্তব্য থ্রেডটি দেখার পরে, আমি আমার উত্তরে একটি সম্ভাব্য বড় পর্যবেক্ষণ উপলব্ধি করতে পারি। আমি মিথ্যাভাবে একটি প্রোগ্রামিং ব্যাকগ্রাউন্ড ধরে নিয়েছি এবং আমি যখন আমার মন্তব্যে আপনার সম্পর্কে কথা বলছিলাম তখন আমি ব্যবহারকারী নয়, তবে প্রোগ্রামার বলতে চাইছিলাম।

আমি মাইক্রোসফ্টের পক্ষে কাজ করি না এবং এই ফোল্ডারগুলির প্রকৃত যুক্তি কী তা সম্পর্কে আমার কোনও ধারণা নেই , তবে আমি মনে করি যে এই ফোল্ডারগুলি রাখার কারণটি এতটাই সুস্পষ্ট যে এটি নিয়ে তর্ক করতে আমার কোনও সমস্যা নেই।

সুতরাং আসুন এটি ভেঙে দিন!

  1. ফোল্ডারগুলি দুর্দান্ত!

    আসুন কিছু বিষয়ে একমত। ফোল্ডার দুর্দান্ত! আমাদের এগুলির দরকার নেই, প্রতিটি হার্ডড্রাইভকে আপনার হার্ডড্রাইভের রুটে রাখার জন্য আমাদের পক্ষে পর্যাপ্ত সম্ভাব্য ফাইলের নাম রয়েছে, তবে কেন ফোল্ডারগুলি মোটেই আছে?

    ঠিক আছে, তারা আমাদের আমাদের জিনিসগুলি অর্ডার করতে সহায়তা করে। এবং অর্ডার করা জিনিস দুর্দান্ত। এটি আমাদের জিনিসগুলিকে আরও সহজে প্রক্রিয়াজাত করতে সহায়তা করে। কাঠামোর প্রয়োজন এমন কোনও মেশিনের সাথে কাজ করার সময় এটি বিশেষত কার্যকর।

  2. ডেটা এবং লজিক পৃথক করে দুর্দান্ত!

    প্রোগ্রামিংয়ে প্রায়শই পাওয়া যায় এমন একটি দৃষ্টান্ত হ'ল যুক্তি থেকে ডেটা আলাদা করা। আপনি এক অংশ চান জানে কিভাবে কিছু করতে এবং আপনি অন্য অংশ যদি আপনি চান কিছু করতে পারেন সঙ্গে

    এটি ফাইল সিস্টেমেও পাওয়া যায়।

    আমাদের কাছে মূল্যবান (ডেটা) জন্য অ্যাপ্লিকেশন (যুক্তি) এবং ফোল্ডার রয়েছে:

    যুক্তিবিদ্যা

    • %WINDIR%
    • %PROGRAMFILES%
    • %PROGRAMFILES(x86)%

    উপাত্ত

    • %PROGRAMDATA%
    • %HOMEDRIVE%%HOMEPATH%

    সুতরাং, ফোল্ডারগুলি দুর্দান্ত দেখতে লাগে এবং প্রোগ্রামগুলি তাদের নিজের ছোট ফোল্ডারে রাখাই বুদ্ধিমান। তবে কেন 2 আছে? কেন ইনস্টলারটিকে সেটি হ্যান্ডেল করতে এবং সবকিছুকে একটি Programsফোল্ডারে রেখে দেওয়া উচিত নয়?

  3. ইনস্টলারগুলি যাদু নয়

    আজ, আমরা আমাদের বৃহত্তর প্রোগ্রামগুলি ইনস্টল করতে প্রায়শই ছোট প্রোগ্রামগুলি ব্যবহার করি। আমরা এই ছোট প্রোগ্রাম ইনস্টলার কল ।

    ইনস্টলারগুলি যাদু নয়। সেগুলি প্রোগ্রামারদের দ্বারা লিখিত হতে হবে এবং অ্যাপ্লিকেশনগুলি (সম্ভাব্য বাগ সহ) সেখানে থাকা অন্যান্য অ্যাপ্লিকেশনগুলির মতো। সুতরাং আসুন এখনকার সিস্টেমটির সাথে এবং ছাড়াও কোনও কল্পিত প্রোগ্রামারকে মুখোমুখি হতে হবে এমন পরিস্থিতিটি দেখুন :

    1 প্রোগ্রাম ফাইল ফোল্ডার

    বিকাশকারী 2 টি ইনস্টলার রাখে। একটি 32 বিটের জন্য এবং একটি তার আবেদনের 64 বিট সংস্করণের জন্য। 32 বিট ইনস্টলার লিখতে হবে C:\Program Files\App\এবং 64 বিট ইনস্টলার লিখতে হবে C:\Program Files\App\sixtyfour\

    2 প্রোগ্রাম ফাইল ফোল্ডার

    বিকাশকারী 1 টি ইনস্টলার রক্ষণাবেক্ষণ করে। ইনস্টলার সবসময় কাছে লিখবো %PROGRAMFILES%এবং অপারেটিং সিস্টেম উপর নির্ভর করে (আপনি আসলে এইসব ক্ষেত্রে জন্য পরিবেশ বিকল্পগুলি ব্যবহার করবেন না, আপনি ব্যবহার করতে চাই সেই অনুযায়ী পথ প্রসারিত করতে SHGetKnownFolderPath সঙ্গে FOLDERID_ProgramFilesসঠিক পথ পুনরুদ্ধার করতে)।
    সবকিছুই স্বয়ংক্রিয়ভাবে এটির জায়গা আবিষ্কার করে এবং আপনার ইনস্টল করা প্রতিটি অ্যাপ্লিকেশনের সাথে প্যাটার্নটি অভিন্ন

  4. ধারাবাহিকতা বোঝা যায়

    আপনি যখন কিছু শিখেন , তখন এটি সাধারণত বোঝায় যে একটি পর্যবেক্ষণ করা আচরণটি সামঞ্জস্যপূর্ণ ছিল। অন্যথায় পর্যবেক্ষণ এবং শেখার আসলে কিছুই নেই।

    আমাদের ছোট ফাইল সিস্টেমের ক্ষেত্রেও একই কথা। সর্বদা একই জিনিসগুলিকে একই ফোল্ডারে রাখার অর্থ হয়। এইভাবে, আমরা যখন কোনও কিছুর সন্ধান করছি তখন আমরা কোথায় সন্ধান করব know

    32/64 অ্যাপ্লিকেশন স্বতন্ত্রতার জন্য সিস্টেমটি এই লক্ষ্যটিকে আরও বাড়িয়ে তোলে। নাম, বাইনারি লোডিং আচরণ এবং সুরক্ষার (কিছুটা হলেও) দ্বন্দ্ব এড়াতে অ্যাপ্লিকেশনগুলিকে 2 টি জায়গায় বিভক্ত করা হয়েছে।

আমি এখনও এটি পাই না। এটি অকেজো বলে মনে হচ্ছে

আপনার একটি জিনিস কখনও ভুলে যাওয়া উচিত নয়। মানুষ অবিশ্বাস্যভাবে বোকা। এর মধ্যে ব্যবহারকারী, সুপার ব্যবহারকারী এবং বিশেষত প্রোগ্রামার অন্তর্ভুক্ত রয়েছে।

এ কারণেই আমাদের সিস্টেমগুলিকে ব্যবহারযোগ্য করে তোলার জন্য আমাদের ফাইল সিস্টেম পুনঃনির্দেশের মতো স্টাফের প্রয়োজন।

প্রোগ্রামাররা কেবল সেখানে প্রবেশ করবে এবং লোড করার চেষ্টা করবে এবং C:\Windows\system32\awesome.dll32 বা 64 বিট সিস্টেমে চলছে কিনা সে বিষয়ে যত্ন নেবে না। তারা 64 বিবিট ডিএলএল লোড করার চেষ্টা করবে এবং কেবল ক্রাশ হবে। কিছু প্রোগ্রামাররা কিছু অফিস ডিএলএল ব্যবহার করতে চায়, কোনও সমস্যা নেই, তারা কোথায় এটি খুঁজে পেতে পারে তা তারা জানে! C:\Program Files\Microsoft\Office\14.0\wizards.dll... এবং অন্য ক্রাশ!

অ্যাপ্লিকেশন ক্রাশ এড়ানোর জন্য 32 বিট অ্যাপ্লিকেশন দ্বারা এই সমস্ত অনুরোধগুলি 32 বিট অংশগুলিতে পুনর্নির্দেশ করা হয়েছে।

এ জাতীয় সিস্টেম তৈরি করতে আমাদের কিছু স্থির ফোল্ডার নাম প্রয়োজন। যদি এই পুনঃনির্দেশ সমর্থন করার জন্য কোনও ফোল্ডার কাঠামো না থাকে তবে আপনি কীভাবে এটি কাজ করতে যাচ্ছেন?

ঠিক আছে, এখন আমি এটি পেয়েছি। তবে কেন ব্যবহার করবেন না C:\Program Files\x86\?

এখন আমরা দার্শনিক হয়ে উঠছি ...

আমি যদি কোনওভাবে পুনঃনির্দেশ প্রক্রিয়াটি এড়িয়ে সমস্ত কিছুকে বাস্তবের কাছে ইনস্টল করতে বাধ্য করি তবে কী ভুল হবে C:\Program Files\?

সম্ভবত কিছুই না (যতক্ষণ না অন্যান্য অ্যাপ্লিকেশনগুলি সেই অ্যাপ্লিকেশনটির জন্য নির্দিষ্ট স্থানে নির্ভর করে না)।

WOW64 প্রক্রিয়া আঙ্গুলসমূহ মধ্যে CreateProcessএবং আরো পরিশীলিত সঞ্চালন পাবেন (এক্সিকিউটেবল এর ফোল্ডার নাম পরীক্ষণ চেয়ে আরো পরিশীলিত) এক্সিকিউটেবল ছবিতে চেক তা নির্ধারণ করার জন্য 32 বা 64 বিট হয়।

হ্যাঁ, তবে আমার অর্থ, সমস্ত অ্যাপ্লিকেশন!

  • আমি যদি আমার গাড়িতে ডিজেল এবং গ্যাস দুটি রাখি তবে কী হবে ?
  • যদি আমি একই লাইনে বিকল্প এবং প্রত্যক্ষ প্রবাহ উভয়ই ব্যবহার করার চেষ্টা করি তবে কী হবে ?
  • আমি যদি আমার বিড়াল এবং আমার মাছ উভয়কে একই অ্যাকোয়ারিয়ামে রাখি তবে কী হবে ?

কিছু প্রশ্নের উত্তরের প্রয়োজন হয় না। এটি করার উদ্দেশ্যে নয়, এটি করবেন না। এখানে লাভ করার মতো কিছুই নেই। এই ধরনের পরিবর্তনের ফলে যে পরিমাণ সমস্যার সৃষ্টি হতে পারে তা তার মধ্যে যে কোনও সম্ভাব্য সুবিধাগুলি সর্বদা ছাড়িয়ে যাবে।


3
যদিও এটিই আসল কারণ? আমি কি কেবল অ্যাপটি ইনস্টল করতে পারি না C:\Program Files\App32এবং C:\Program Files\App64?
স্টিফেন জেনিংস

4
@ স্টেফেন জেনিংস: তবে এর জন্য আপনাকে ম্যানুয়ালি সিদ্ধান্ত নিতে হবে। পথে এখন এটি কাজ করে যে প্রক্রিয়া স্বয়ংক্রিয়, কারণ উইন্ডোজ জানেনা কবে একটি অ্যাপ্লিকেশন কল কি ফোল্ডারের প্রদান করা হয় SHGetSpecialFolderPathঅবস্থান ইনস্টল নির্ধারণ।
ডের হচস্টাপলার

6
@ সিনিটেক: কেন %PROGRAMFILES%প্রথম স্থানে ইনস্টল করবেন ? কেন ব্যবহারকারীগণের ডেস্কটপে 32 বিট সংস্করণ এবং 64 বিটটিকে রিসাইকেল বিনে রাখবেন না? এটি সম্পন্ন করার কারণে, এটি একটি ভাল ধারণা নয়। দুঃখিত, আমি আপনার যুক্তি অনুসরণ না।
ডের হচস্টাপলার

4
@ সিনিটেক: হ্যাঁ, আপনি কীভাবে এটি করা যায় তার একটি দুর্দান্ত উদাহরণ দিয়েছিলেন। এটি কীভাবে করা যেতে পারে তার আরেকটি নিখুঁতভাবে ভাল উদাহরণ হ'ল এটি এখন ঠিক কীভাবে করা হচ্ছে। কেবলমাত্র% প্রোগ্রামফায়ালস% এ কোনও ফাইল লিখলে এবং নিশ্চিত হওয়া যায় যে এটি সঠিক ফোল্ডারে শেষ হবে is কোনটি ফোল্ডারটি সঠিক তা নিজের জন্য যাচাই করা অন্যটি। আপনি যদি পূর্বের পদ্ধতির সুবিধাটি না দেখেন তবে আমি আপনাকে বোঝাতে সক্ষম হব না। 2 টি ফোল্ডার কেন প্রশ্ন ছিল। আমি মনে করি যে আমার উত্তরটি এক্ষেত্রে পুরোপুরি যুক্তিসঙ্গত।
ডের হচস্টাপলার

3
অলিভারসালজবার্গ প্রশ্ন হল কেন দুই ফোল্ডার করছে প্রয়োজনীয় নয় কেন সেখানে হয় । আসলে, তিনি এমনকি এটি সাহসী: কেন এটি এমনকি প্রয়োজনীয়? কেন এটি প্রয়োজনীয় তা আপনি ব্যাখ্যা করেন নি এবং আমি যে উদাহরণ দিয়েছি (এবং এমনকি আপনার নিজস্ব ব্যঙ্গাত্মক উদাহরণ) কেবল এটি দেখায় যে এটি যেভাবে করা হয় তা হয় না ।
সিনিটেক

14

টি এল; ডিআর:

সংক্ষেপে বলা যায়, না, এটি প্রয়োজনীয় নয় ; তারা একটি একক ফোল্ডার ব্যবহার করতে পারে এবং না, উইন্ডোজ কোনও অবস্থান বা অন্য কোনও স্থান থেকে চালিত কোনও প্রোগ্রামের জন্য নিজেকে আলাদাভাবে উপস্থাপন করে না।


ঠিক আছে, প্রত্যেকেই এই বিষয়ে তাদের মতামত ফেলেছে বলে মনে হচ্ছে, তাই আমি আমার 2 ss এ টস করব ¢ মাইক্রোসফ্ট কেন প্রোগ্রামগুলির 32-বিট এবং 64-বিট সংস্করণগুলির জন্য পৃথক শীর্ষ স্তরের ফোল্ডার তৈরি করতে বেছে নিয়েছে তার কারণগুলির বিষয়ে অন্যরা ইতিমধ্যে অনুমান করেছেন , সুতরাং আমি সেই অংশটি ছেড়ে যাব (সর্বোত্তম কারণটি ডেভিডের ব্যাখ্যা ছিল যে এটি একটি হিসাবে রয়েছে প্রোগ্রামারদের জন্য সুবিধা)। অবশ্যই তারপরেও, এটি সরাসরি প্রশ্নের সরাসরি সমাধান করে না কেন এটি এমনকি প্রয়োজনীয় কেন? , যার উত্তর সম্ভবত অনুমান: এটি তা নয়

পরিবর্তে, আমি প্রশ্নের মূল অংশটি সম্বোধন করব

উইন্ডোজ কি কোনওভাবে "প্রোগ্রাম ফাইল (x86)" এর বাইরে চলমান একটি প্রোগ্রামের কাছে নিজেকে আলাদাভাবে উপস্থাপন করে?

আসলেই নয়, তবে প্রোগ্রামটির অবস্থান আচরণকে প্রভাবিত করতে পারে তবে আপনি যেভাবে ভাবেন সেভাবে নয়।

আপনি যখন কোনও প্রোগ্রাম পরিচালনা করেন, উইন্ডোজ একটি পরিবেশ সেট আপ করে যেখানে এটি চালানো হয় (মানে মেমরি, ঠিকানা ইত্যাদির নিরিখে কেবল পরিবেশের পরিবর্তনশীল নয়)। এই পরিবেশ নির্বাহযোগ্য (32-বিট এবং 64-বিট প্রোগ্রামগুলি অভ্যন্তরীণভাবে পৃথক হয়) এর সামগ্রীর উপর নির্ভর করে। আপনি যখন একটি -৪-বিট সিস্টেমে একটি 32-বিট প্রোগ্রাম চালান, এটি 32-বিট সাবসিস্টেমে চলে যা 32-বিট পরিবেশকে এমুলেট করে। এটা তোলে বলা হয় WoW64 (WoW64 ঘোরা উইন্ডোজ 64-বিট উইন্ডোজ ) এবং কি করে 16 বিট অ্যাপ্লিকেশন ব্যবহার করার এক্সপিতে পিরচািলত হেব অনুরূপ NTVDM

যখন আপনি সহ বা প্রশাসনিক বিশেষাধিকার ছাড়া একটি প্রোগ্রাম চালানো, এটা কিভাবে রান প্রভাবিত করে, কিন্তু অবস্থান করা উচিত এটা প্রভাবিত করে না (যদিও সেখানে উদাহরণস্বরূপ কিছু ড্রাইভার মত অবস্থান নির্ভরতা কিছু উদাহরণ)।

(আমি একটি পৃথক কম্পিউটার ব্যবহার করছি, তাই আমি আমার পদক্ষেপগুলি ব্যাকট্র্যাক করতে আমার ব্রাউজারের ইতিহাসের উপর নির্ভর করতে পারি না, তবে অন্য দিন এই এসইউ প্রশ্নের উত্তর দেওয়ার সময় আমি এই এসও প্রশ্নের উত্তর শেষ করেছিলাম যা আমাকে গুগল প্রোসেসর_আর্কটিউইউ 64৪64২২ এ নিয়েছিল যা এই এসও প্রশ্নের দিকে পরিচালিত করে এবং এই মাইক্রোসফ্ট ব্লগ পোস্ট ।)

কোথাও কোথাও, আমি পরিবেশবাদী ভেরিয়েবলটি %processor_architecutre% আপনি কোথায় থেকে কমান্ড-প্রম্পটটি চালাবেন তার উপর নির্ভর করে কীভাবে বিভিন্ন ফলাফল দেয় সে সম্পর্কে একটি স্ট্যাকওভারফ্লো পোস্ট পড়েছি (আমি সঠিক উদ্ধৃতিটি সন্ধান করার চেষ্টা করব)।

কমান্ড প্রম্পটের 32-বিট বা -৪-বিট সংস্করণটি চালিত হয়েছিল (যেমন, System32\বা এর থেকে SysWoW64\) উত্তরটি প্রমাণিত হয়েছিল । অন্য কথায়, অবস্থানটি প্রোগ্রামটির আচরণকে প্রভাবিত করে বলে মনে হচ্ছে , এটি কেবলমাত্র প্রোগ্রামের বিভিন্ন সংস্করণ রয়েছে বলেই নয়, উইন্ডোজ একটি বিশেষ উপায়ে ফোল্ডারটির সাথে আচরণ করে।

এটি বোঝা যায় কারণ এক্সিকিউটেবল ফাইলের বিষয়বস্তু এটি 32-বিট বা -৪-বিট কিনা তা নির্ধারণ করে, সুতরাং আপনি একই ফোল্ডারে একই প্রোগ্রামের (যেমন, foobar32.exeএবং foobar64.exe) একটি 32-বিট এবং 64-বিট উভয়ই রাখতে পারেন এবং যখন আপনি এগুলিকে এক্সিকিউট করুন, এগুলি সঠিকভাবে লোড হবে (bit৪-বিট সংস্করণটি নেটিভালি চালানো হবে এবং ৩২-বিট সংস্করণটি ওয়ার্ল্ড 6464 এমুলেশন লেয়ারে চালানো হবে)।

FreePascal আপনি উভয় ডস এবং Windows সংস্করণ ইনস্টল করার অনুমতি দেয় এবং তারা একই ফোল্ডারে যান: %programfiles%\FreePascal। এটা তোলে এক্সিকিউটেবল ফাইল (রেখে বিভিন্ন আর্কিটেকচারের পরিচালনা করে .exe, .sys, .dll, .ovr, ইত্যাদি) আলাদা ফোল্ডারে এবং, উৎস-ফাইল, ইত্যাদি) কোন প্রযুক্তিগত কারণে যে এই 32- এবং জন্য সম্পন্ন করা পারে ছবি মত রিসোর্স ফাইল শেয়ারিং একটি প্রোগ্রামের 64-বিট সংস্করণ। ডেভিড যেমন বলেছিলেন, প্রোগ্রামারকে এগুলি পৃথক রাখা হলে (যেমন, ভেরিয়েবল ব্যবহার করে এটি দেখতে কেবল ফাইলগুলির একটি সেট রয়েছে, ইত্যাদি দেখতে এটি সহজ) is


নিচে ভোট দেওয়ার প্রতিশোধ! Muahahaha! দীর্ঘশ্বাস
Synetech

ডাউন-ভোট আজব: \। বিটিডাব্লু ভাল +1 ব্যাখ্যা করুন।
avirk

11

আর একটি কারণ হ'ল বেশিরভাগ প্রোগ্রামগুলি পরিবেশগত পরিবর্তনশীল যেমন% প্রোগ্রামারগুলি ব্যবহার করতে ব্যবহৃত হয় যেখানে তাদের প্রোগ্রামটি কোথায় ইনস্টল করা হয়েছিল তা নির্দেশ করে point Bit৪ বিট প্রোগ্রামের জন্য, এটি স্বাভাবিক জায়গায় যায়। 32 বিট প্রোগ্রামের জন্য, এটি নতুন Program Files (x86)ফোল্ডারে পুনর্নির্দেশ করবে ।

যদিও, কমপক্ষে ভিজুয়াল স্টুডিওতে নতুন। নেট স্টাফ সহ, তাদের কাছে এখন অ্যাপ্লিকেশন oc লোকাল ভেরিয়েবল রয়েছে যা এটির পুরো প্রয়োজনটি সরিয়ে দেয়।


4
এটি এটি ব্যাখ্যা করে না। কে হুবহু পরিবেশের পরিবর্তনশীল ব্যবহার করছে এবং কোনও প্রোগ্রাম 32-বিট বা -৪-বিট কিনা তা কেন যত্ন করবে?
Synetech

4
@ সাইনটেক - প্রোগ্রামগুলির লেখক পরিবেশ পরিবর্তনশীল ব্যবহার করে। কারণগুলির যত্ন নেওয়ার কারণটি হ'ল ডলসের উল্লেখ। আপনি একটি 64-বিট প্রক্রিয়া এবং বিপরীতে একটি 32-বিট ডেল লোড করতে পারবেন না।
রামহাউন্ড

1
এবং কিভাবে কি করতে %programfiles%, %programfiles(x86)%অথবা %programw6432%সেখানে একটি পার্থক্য করতে? যে কোনও ভাগ করা ডিএলএলগুলি একক উইনএক্সএক্সএস ডিরেক্টরিতে চলে যায় এবং কোনও ভাগ না করে ভাগ করা ডিএলএল ঠিক সেখানে কার্যকর করা যায়। এটি কেবল তখনই কার্যকর হবে যদি আপনার কোনও কারণে একই প্রোগ্রামের 32-বিট এবং 64-বিট উভয় সংস্করণ ইনস্টল করা থাকে এবং তারপরেও আপনি 32-বিট এক্সিকিউটেবল এবং 64-বিট ডিএলএল দিয়ে 32-বিট ডিএলএল রাখবেন -৪-বিট এক্সিকিউটেবল। আপনি %programfiles%\CoolApp\bin\32এটির মতো এটি করতে পারেন: এবং% প্রোগ্রামফায়ালগুলি% \ কুলঅ্যাপ \ বিন \ 64`, পৃথক শীর্ষ স্তরের ফোল্ডারগুলি কেন?
Synetech

@ সাইনটেক অবশ্যই তা নিশ্চিত করে; % প্রোগ্রামফায়াল% প্রায় সময় হয়েছে। যদি আপনি একটি bit৪ বিট কম্পিউটারে একটি 32 বিট প্রোগ্রাম ইনস্টল করেন তবে এক জায়গায় থাকার কারণে 32 বিট অ্যাপ্লিকেশনটির জন্য সমস্যা দেখা দিতে পারে। বাহ যদিও 32% বিট অ্যাপ্লিকেশনগুলির জন্য (x86) সংস্করণে% প্রোগ্রামফিল% কে, এবং 64-র জন্য নন- x86 সংস্করণে পুনঃনির্দেশ করতে পারে
অ্যান্ডি

আমি মনে করি লোকেরা এত বিভ্রান্ত হবে না, যদি কোনও অন্তর্নিহিত পুনঃনির্দেশ না পাওয়া যায়
kommradHomer

8

মাইক্রোসফ্টের এই পরিবর্তনটি 32-বিট থেকে -৪-বিট-তে স্থানান্তরিত করার ক্ষেত্রে সর্বাধিক 32-বিট অ্যাপ্লিকেশনগুলির জন্য উত্তরাধিকার সমর্থন যোগ করা হয়েছিল। অন্য কথায়, বেশিরভাগ 32-বিট অ্যাপ্লিকেশনগুলি 64-বিট অপারেটিং পরিবেশে কাজ করবে। মনে রাখবেন যে operating৪-বিট আর্কিটেকচারে অপারেটিং করা অন্যান্য অপারেটিং সিস্টেমগুলি 32-বিট অ্যাপ্লিকেশন মোটেই লোড বা চালাতে পারে না।

রূপান্তরটি আরও সহজ করার জন্য, মাইক্রোসফ্ট নির্ধারণ করেছে যে সমস্ত 32-বিট অ্যাপ্লিকেশনটি, ডিফল্টরূপে, নিয়মিত প্রোগ্রাম ফাইল ফোল্ডারে সত্যিকারের 64-বিট অ্যাপ্লিকেশনগুলির সাথে মিশ্রিত না হয়ে প্রোগ্রাম ফাইলগুলি (x86) ফোল্ডারে লোড করা উচিত।

উৎস

"আমি যদি কোনওভাবে পুনঃনির্দেশ প্রক্রিয়াটি এড়িয়ে গিয়ে সবকিছুকে সত্যিকারের সি: \ প্রোগ্রাম ফাইলগুলিতে ইনস্টল করতে বাধ্য করি তবে কী ভুল হবে?"

কিছুই নেই। দুটি প্রোগ্রাম ডিরেক্টরি কেবল সংস্থার জন্য বা এমন দুটি প্রোগ্রাম রয়েছে যাতে ইন্টারনেট এক্সপ্লোরারের মতো একটি 32-বিট এবং 64-বিট সংস্করণ আলাদা থাকে। তবে আপনি "প্রোগ্রাম ফাইলগুলি" এ একটি 32-বিট প্রোগ্রাম এবং "প্রোগ্রাম ফাইল x86" এ একটি 64-বিট প্রোগ্রাম ইনস্টল করতে পারেন এবং কিছুই হবে না প্রোগ্রামটি একই চলবে।

উইকি বলেছেন:

কিছু অ্যাপ্লিকেশন ইনস্টলার ইনস্টল পাথ অবস্থানের মধ্যে স্থানগুলি প্রত্যাখ্যান করে। 32-বিট সিস্টেমের জন্য, প্রোগ্রাম ফাইল ফোল্ডারের সংক্ষিপ্ত নামটি হ'ল প্রোগ্রা ~ 1 । -৪-বিট সিস্টেমের জন্য, -৪-বিট প্রোগ্রাম ফাইল ফোল্ডারের সংক্ষিপ্ত নাম হ'ল প্রোগ্রা ~ 1 (32-বিট সিস্টেমের মতো); যখন 32-বিট প্রোগ্রাম ফাইলগুলির (x86) ফোল্ডারের সংক্ষিপ্ত নামটি এখন প্রোগ্রা ~ 2


1
হে হে। চমৎকার নিবন্ধ। এই নিবন্ধটির মন্তব্যগুলি এখানে ঠিক মতই শোনাচ্ছে। সবচেয়ে খারাপ বিষয়, এই নিবন্ধটি দু'বছরেরও বেশি আগে থেকেই ছিল, যা কেবল দেখায় যে এই প্রশ্নটি নতুন নয় এবং যদি এখনও এর প্রামাণিকভাবে উত্তর দেওয়া যায় না তবে আমি অনুমান করি যে এটি কখনই হবে না (যদি না উইন্ডোজ দলের কেউ চিমে না থাকে)। ওহ ভাল, আমি মনে করি আমাদের সকলকে কেবল দুশ্চিন্তা বন্ধ করা উচিত এবং বোমাটি ভালবাসা শিখতে হবে, আহ, আমি এর সাথে বাঁচতে চাইছি। +1 নিবন্ধটি নির্দেশ করে এবং দেখানোর জন্য যে এই প্রশ্নটি এত দিন ধরেই ছিল।
Synetech

1
@ সিনিটেক ধন্যবাদ! হ্যাঁ, নিবন্ধের লিঙ্কটি রাখার পিছনে ধারণাটি আপনি যেমন পেয়েছেন ঠিক একইরকম। এটি একটি অতি পুরনো প্রশ্ন কিন্তু আইডি কে কেন লোকেরা এখনও তা পেতে পারেনি। তবে
এমএসের

হ্যাঁ তাদের উচিত, বিশেষত কারণ এটি কেবল বিকাশকারীরাই জিজ্ঞাসা করে না, এমনকি সাধারণ ব্যবহারকারীরাও এ সম্পর্কে অবাক হন। দুর্ভাগ্যক্রমে মাইক্রোসফ্টের ডকুমেন্টেশন প্রায়শই খুব ভাল হয় না।
Synetech

@ সাইনটেক হ্যাঁ! এমএস ডকুমেন্টেশন বেশিরভাগ সময় স্তন্যপান করে। তবে হ্যাঁ তারা বেশ কয়েকটি ভাল নিবন্ধও লিখেছেন এবং আমি নিশ্চিত যে তারা গণনাযোগ্য;)
এয়ার্ক

6

কারণটি হ'ল একটি প্রোগ্রাম বিকাশকারীদের জন্য 64৪-বিট সহজ করে তুলতে। 32-বিট মোডে এবং অন্য ডিরেক্টরিতে যখন 64-বিট মোডে সংকলন করার সময় একটি ডিরেক্টরিতে প্রোগ্রামটি পরীক্ষা করতে তাদের কোনও কাস্টম কোড লিখতে হবে না; তারা কেবল পরীক্ষা করে C:\Program Files, এবং 32-বিট মোডের অধীনে চলার সময় এটি স্বয়ংক্রিয়ভাবে C:\Program Files (x86)64-বিট উইন্ডোজ দ্বারা পরিবর্তিত হয় । একইভাবে, রেজিস্ট্রি এন্ট্রিগুলি 32-বিট এবং 64-বিট প্রোগ্রামগুলির মধ্যে বিচ্ছিন্ন।

এটি অজান্তে বিকাশকারীদের দ্বন্দ্বগুলি প্রতিরোধ করে যারা কেবলমাত্র তাদের সংকলন মোডটিকে খুব বেশি চিন্তাভাবনা না করে 64৪-বিটে পরিবর্তন করে এবং ব্যবহারকারীরা তাদের 32- এবং 64-বিট সংস্করণ উভয়ই ইনস্টল করতে সক্ষম হতে চান এমন বিকাশকারীদের জন্য প্রচুর পরিমাণে কাজের বাধা দেয় their একযোগে সফ্টওয়্যার।


তবে কেন কোনও প্রোগ্রাম উভয় সংস্করণ একই সাথে ইনস্টল করার অনুমতি দিতে চাইবে? একটি উদাহরণ: ফটোশপ এবং আই-এর এক্সটেনশনগুলি রয়েছে যা দেশী। Dll এর। আপনার একই প্রক্রিয়াতে 32- এবং 64-বিট কোড মিশ্রিত থাকতে পারে না, তাই 32-বিট সংস্করণের জন্য একটি অ্যাডন 64-বিট সংস্করণ এবং তদ্বিপরীত ব্যবহার করা যাবে না। সুতরাং, ফটোশপ / আই ই আছে উভয় সংস্করণই ইনস্টল করার জন্য অনুমতি দেয়, অথবা ঝুঁকি বিদ্যমান অ্যাডঅনস তাদের বিশাল বেস ভঙ্গ।


2
+1 কমপক্ষে আপনি গড় ব্যবহারকারীদের উভয় সংস্করণ কেন থাকবে তার অন্তর্নিহিত প্রশ্নটি সম্বোধন করেছেন।
Synetech

5

"প্রোগ্রাম ফাইলগুলি (x86)" এ চালিত প্রোগ্রামগুলি ডাব্লুডাব্লু 64 সাবসিস্টেমটি ব্যবহার করে (উইন্ডোজ -৪ -বিটে উইন্ডোজ 32-বিট একটি ড্রাইভার 64 এবং এপিআই-এর একটি সেট যা একটি x64 আর্কিটেকচার সিস্টেমের উপর x32 অ্যাপ্লিকেশন চালানোর উদ্দেশ্যে):

ওউডাব্লু 64 সাবসিস্টেমটিতে একটি হালকা ওজনের সামঞ্জস্যতা স্তর রয়েছে যা উইন্ডোজের সমস্ত 64-বিট সংস্করণে একই রকম ইন্টারফেস রয়েছে। এটির লক্ষ্যটি 32-বিট পরিবেশ তৈরি করা যা 64-বিট সিস্টেমে অবিস্মরণিত 32-বিট উইন্ডোজ অ্যাপ্লিকেশনগুলি চালানোর জন্য প্রয়োজনীয় ইন্টারফেসগুলি সরবরাহ করে। প্রযুক্তিগতভাবে, ওউডাব্লু 64 তিনটি গতিশীল-লিঙ্ক লাইব্রেরি (ডিএলএল) ব্যবহার করে প্রয়োগ করা হয়েছে:

  • Wow64.dll, উইন্ডোজ এনটি কার্নেলের মূল ইন্টারফেস যা পয়েন্টার এবং কল স্ট্যাক ম্যানিপুলেশন সহ 32-বিট এবং 64-বিট কলগুলির মধ্যে অনুবাদ করে
  • Wow64win.dll, যা 32-বিট অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত এন্ট্রি-পয়েন্ট সরবরাহ করে
  • Wow64cpu.dll, যা প্রসেসরটিকে 32-বিট থেকে 64-বিট মোডে স্যুইচ করার যত্ন নেয়

64 বিট সিস্টেমে 32 বিট অ্যাপ্লিকেশনগুলিকে "অনুকরণ" করা দরকার, এ কারণেই উইন্ডোজের দুটি প্রোগ্রাম ফাইল ফোল্ডারকে "আলাদা" করা দরকার।


7
তবে কেন এটি আলাদা ফোল্ডারে রাখতে হবে? উইন্ডোজ পিই শিরোলেখ দেখে ইতিমধ্যে নির্বাহকের আর্কিটেকচার নির্ধারণে পুরোপুরি সক্ষম। এটি কার্যকর পরিবেশকে লোড করলে কেন এটি উপযুক্ত পরিবেশটি লোড করতে পারে না?
Synetech

1
আমি মনে করি কোনও প্রোগ্রাম খোলার সময় মাইক্রোসফ্টের কাছ থেকে এটি বেছে নেওয়া কেবল কোনও পছন্দ ব্যবহারকারীদের কাছে সহজেই প্রদর্শন করা উচিত যে তারা কোন প্রোগ্রাম খোলার সময় দুটি আঞ্চলিক সংস্করণ থেকে কোন আর্কিটেকচার চান। আমার অর্থ, যদি এই দুটি ফোল্ডার না থাকে এবং এটি যদি ব্যবহারকারীদের কাছে স্বচ্ছ হয় (এটি যদি স্বয়ংক্রিয়ভাবে স্যুইচ হয়) তবে 32 বা 64 বিট অ্যাপ্লিকেশন চালাচ্ছিল কিনা তা তারা জানত না, এমনকি কোন প্রোগ্রামটি খুলতে হবে তা তারা জানত না যদি 64 বিটে চলমান ..
ডায়োগো

1
আইই এর 64-বিট সংস্করণটি ভয়ানক হওয়ার জন্য খ্যাতি পেয়েছে।
স্যামুয়েল এডউইন ওয়ার্ড

1
এমএস আপনাকে অফিস 32 ব্যবহার করার পরামর্শ দিচ্ছে যদি না আপনি মেমরির সীমাবদ্ধতার চেয়ে বেশি পরিমাণে ডেটাসেটের সাথে কাজ করেন। আমি বিশ্বাস করি অফিস 64 এর সাথে কাজ করতে বাইনারি অ্যাডনগুলি পুনরায় সংকলনের প্রয়োজন; সিদ্ধান্তের পিছনে সাধারণ ব্যবহারের ক্ষেত্রে কোনও সুবিধা না দেওয়ার সাথে মিলিত।
ড্যান নীলি

1
আমি মনে করি আপনি দেখতে পাবেন যে একটি 64-বিট প্রোগ্রাম স্পষ্টভাবে প্রোগ্রাম ফাইল (x86) ফোল্ডারে ইনস্টল করা পুরোপুরি স্বাভাবিকভাবে কাজ করবে (এবং বেশিরভাগ ক্ষেত্রে এর বিপরীতে)। এক্সিকিউটেবলের সাথে কীভাবে আচরণ করা যায় তা নির্ধারণ করতে উইন্ডোজ ফোল্ডারের অবস্থান ব্যবহার করে না।
হ্যারি জনস্টন

5

এটি আকর্ষণীয় যে এখানে এবং ইন্টারনেট জুড়ে উত্তরগুলি কিছুটা পৃথক হয়। এই গুরুত্বপূর্ণ প্রশ্নের সঠিক উত্তর খুঁজে পাওয়া একটি চ্যালেঞ্জ ছিল। ইন্টারনেটে উপস্থাপন করা হয়েছে বেশ কিছু ভুল তথ্য যা বিভ্রান্তির দিকে নিয়ে যায়।

আমি উল্লেখযোগ্য পরিমাণে গবেষণা সম্পাদন করেছি এবং নিম্নলিখিত উপসংহারটি আঁকতে পেরেছি, যা আমার বিশ্বাস সঠিক:

  • কোনও অ্যাপ্লিকেশন যেখানে সংরক্ষণ করা হয়েছে তাতে কোনও তাত্পর্য হয় না। রানটাইমের সময়, উইন্ডোজ নির্ধারণ করবে অ্যাপ্লিকেশনটি 32-বিট বা 64-বিট কিনা এবং স্বয়ংক্রিয়ভাবে উপযুক্ত ডিএলএল এবং রেজিস্ট্রি বিভাগ ব্যবহার করে।

এটি স্বয়ংক্রিয়ভাবে ঘটে এবং অ্যাপ্লিকেশনটি কোথায় সঞ্চয় করা হয় তার থেকে আলাদা। পৃথক 32-বিট এবং 64-বিট ফোল্ডার থাকার কোনও গতি, নির্ভরযোগ্যতা বা অন্যান্য কার্যকরী সুবিধা নেই।

দুটি ফোল্ডারে ('প্রোগ্রাম ফাইল' এবং 'প্রোগ্রাম ফাইলগুলি (x86)' এ ডিফল্ট পৃথক হওয়ার একমাত্র কারণ হ'ল যদি আপনার একই প্রোগ্রামের দুটি সংস্করণ (একটি 32-বিট এবং 64-বিট সংস্করণ) থাকে তবে এটি একটি সরবরাহ করে ওভারল্যাপিং ফাইলগুলি আলাদা রাখার সহজ উপায়। এমনকি এই ক্ষেত্রে, যতক্ষণ না সমস্ত ফাইলের নাম অনন্য, ততক্ষণ তারা কোনও ফল ছাড়াই একই ফোল্ডারে উপস্থিত থাকতে পারে।

উপরোক্ত উপসংহারে একটি সতর্কতা রয়েছে এবং এটি হ'ল খারাপ কোডেড অ্যাপ্লিকেশনগুলির মধ্যে একটি। যদি কোনও অ্যাপ্লিকেশনটিতে এতে হার্ডকোডযুক্ত কোনও পাথ থাকে, তবে এটি কেবল সেই পাথটিই ব্যবহার করবে। একটি নিয়ম হিসাবে, পাথগুলিকে কখনই কোনও অ্যাপ্লিকেশনটিতে হার্ডকোড করা উচিত নয়, তবে মাঝেমধ্যে কোনও প্রোগ্রামার এই ভুলটি করে। এই ক্ষেত্রে, প্রোগ্রামটি হার্ডকোডযুক্ত পথ ব্যবহার করবে; যে ডিরেক্টরিটিতে অ্যাপ্লিকেশন ইনস্টল করা আছে তা প্রকৃতপক্ষে কোথায় ফাইলগুলির সন্ধান করে তা প্রভাবিত করবে না।


3

আলাদা আলাদা ফোল্ডার রাখার ফলে স্থানীয় -৪ -বিট অ্যাপ্লিকেশনগুলি রাখা এবং ওউডব্লিউ apart৪ পৃথক প্রয়োজনের জন্য এটি সম্ভব করে তোলে ।

এটি কার্যকর হতে পারে - যেমন @ অলিভারসালজবুর্গ ইতিমধ্যে উল্লেখ করেছেন - আপনি যদি তিনি ওয়েব ব্রাউজারের 64৪ -বিট এবং ৩২-বিট উভয়ই ইনস্টল করতে চান (উদাহরণস্বরূপ), যেহেতু কিছু প্লাগইন এবং অ্যাড-অন কেবল একটির জন্যই উপলব্ধ দুই.

পৃথক ফোল্ডার রাখার ফলে রেজিস্ট্রি পুনঃনির্দেশের মতো কৌশল ব্যবহার করে এই বিচ্ছেদটি স্বয়ংক্রিয় হয়

মনে করুন কোনও ইনস্টলার প্রোগ্রামার ফাইল ফোল্ডারটি রেজিস্ট্রি পড়ার মাধ্যমে উদাহরণস্বরূপ, RegQueryValueEx ব্যবহার করে নির্ধারণ করার চেষ্টা করে ।

যাইহোক, এটি রেজিস্ট্রি কীটি পড়ার চেষ্টা করে

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

যা সাধারণত নির্দেশ করে C:\Program Files

যাইহোক, যদি ইনস্টলারটি 32-বিট অ্যাপ্লিকেশন হয় তবে রেজিস্ট্রি পুনর্নির্দেশটি রেজিট্রি কী তৈরি করবে

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion

পরিবর্তে পড়তে হবে, যা সাধারণত নির্দেশ করে C:\Program Files (x86)

এই নির্দিষ্ট ফোল্ডারের নামগুলি কেন ব্যবহার করা হয়েছে কেবল তারাই উত্তর পছন্দ করতে পারে যারা এই পছন্দটি করেছেন। আপনি চাইলে সর্বদা ডিফল্ট ফোল্ডারগুলির নাম পরিবর্তন করতে পারেন।

উইন্ডোজ কি কোনওভাবে "প্রোগ্রাম ফাইল (x86)" এর বাইরে চলমান একটি প্রোগ্রামের কাছে নিজেকে আলাদাভাবে উপস্থাপন করে?

আমি এটাকে সন্দেহ করি. বেশিরভাগ ইনস্টলার আপনাকে কাস্টম ইনস্টলেশন ফোল্ডার চয়ন করার অনুমতি দেয়, তাই কোনও প্রোগ্রাম কোথায় ইনস্টল হবে তা আসলেই কিছু যায় আসে না ।


দুঃখিত আমি "পারমিট" "নিষিদ্ধ" এর সাথে মিশ্রিত করেছি
ওয়ার্নফ্রাইড ডমসচিট

3

আমি এখানে বিভ্রান্তি বিশ্বাস করতে পারি না .. প্রথমত আমি একটি পূর্ণ-সময়ের বিকাশকারী।

পুরানো 32-বিট অ্যাপ্লিকেশন এবং আরও নতুন 64-বিট অ্যাপ্লিকেশন উভয়ই একটি ডিএলএল ব্যবহার করে এমন ক্ষেত্রে সমাধানের জন্য এমএস এটি করেছে। পুরানো পদ্ধতিটি পরিবর্তন করা যায়নি (সিস্টেম 32, প্রোগ্রাম ফাইলস, ইত্যাদি) কারণ এটি পুরানো প্রোগ্রামগুলিকে ভেঙে দেবে যা পুনরায় সংযুক্ত করা যায় না।

সুতরাং এমএস 64৪-বিট নির্দিষ্ট প্রোগ্রাম, অ্যাসেম্বলি এবং লাইব্রেরিগুলি সংরক্ষণ করার জন্য একটি ফোল্ডার তৈরি করেছে যাতে নতুন প্রোগ্রামগুলি সঠিক লাইব্রেরিতে লিঙ্ক করতে পারে এবং পুরানো প্রোগ্রামগুলি স্বাভাবিক হিসাবে কাজ চালিয়ে যেতে পারে।

যেমনটি দাঁড়িয়েছে,। নেট ডিএলএল একই মেশিনে অন্যান্য সংস্করণগুলির সাথে সহাবস্থান করতে পারে। উদাহরণস্বরূপ, আপনার কাছে গ্রন্থাগার ১.০.১, গ্রন্থাগার ১.০.২, লাইব্রেরি ১.১.০ ইত্যাদি থাকতে পারে এবং এটি কেবলমাত্র একটি নির্দিষ্ট বিট আকারের জন্য (32 বা 64)। যদি পৃথক ফোল্ডার ব্যবহার না করা হয় তবে প্রতিটি সমাবেশে 32 এবং 64 বিট সংস্করণ থাকা দরকার। এটি ইতিমধ্যে একই সমাবেশের একাধিক সংস্করণ রয়েছে এমন একটি ডিরেক্টরিকে গুরুতরভাবে বিশৃঙ্খলা করবে।

এটি সমস্ত বিকাশকারী স্টাফ। একজন ব্যবহারকারী হিসাবে আমাকে কেবল তখনই মোকাবিলা করতে হবে যখন আমি উইন্ডোজ 64৪ on৪-তে একটি 32-বিট প্রোগ্রামের সাথে কাজ করছি And এবং আমি 32-বিট সংস্করণ এবং একই অ্যাপ্লিকেশনটি 64-বিটে চালানোর ক্ষমতা রাখি prefer যখন আমি একটি 32-বিট অ্যাপ্লিকেশন নিয়ে কাজ করছি যা আমাকে 64-বিটে সংকলন করতে হবে, আমি যা করি তা কেবল কম্পাইলারকে তা করতে বলে। Dll নাম এবং অন্যান্য সমস্ত কিছু একই থাকে।

উইন্ডোজ 95/98 এর সাথে এটির অস্তিত্ব ছিল না কারণ সেগুলি হ'ল 32-বিট রানটাইম সিমুলেটেড; এটি একটি আসল 32-বিট অপারেটিং সিস্টেম ছিল না। এটি "থ্যাঙ্কিং" নামের কিছু দিয়ে 32-বিট কার্যকর করা নকল করে।

এখানে একটি ভাল সংজ্ঞা দেওয়া হয়েছে: http://searchwinit.techtarget.com/definition/thunk


1
কীভাবে ProgramFiles(x86)` avoid clutter? There are still both 32- and 64-bit versions of files, so avoiding clutter doesn't make sense. There is no difference between putting them in \ 32 \ blah` বা \blah\32; যেভাবেই হোক না কেন, তারা পৃথক হয়ে গেছে। যদি কিছু হয় তবে বর্তমান উপায় অ্যাপ্লিকেশনটির উপাদানগুলি পৃথক করে (এবং অল্প সংখ্যক অ্যাপ্লিকেশন CommonFilesসংস্থান এবং এর জন্য ব্যবহার করে সেগুলি অহেতুকভাবে সেগুলিও অনুলিপি করে তোলে Besides এছাড়াও, আপনি এটিকে শব্দ করে তোলেন যেন অ্যাপ্লিকেশনগুলি তাদের ডিএলএলগুলিকে একটি সাধারণ বালতিতে ফেলে দিচ্ছে an কোনও অ্যাপ্লিকেশন রাখাই যথেষ্ট সহজ an 32-বিট এক্সএল সহ 32-বিট ডিএলএল এবং এটি 64-বিট এক্সএস সহ 64৪-বিট ডিএলএলস
সিনেটেক

ওহ, এবং 95/98 হিসাবে, কে এই সম্পর্কে কিছু বলেছে? এমনকি এক্সপির একটি 16-বিট সাবসিস্টেম ছিল (এনটিভিডিএম)।
Synetech

আমি ভেবেছিলাম আপনি ব্যাখ্যা চান। কয়েকটি অ্যাপ্লিকেশন কমনফিল ব্যবহার করে? আমার 35 টি বিভিন্ন অ্যাপ্লিকেশন রয়েছে যা এখানে প্রবেশ করে। এটি সিস্টেম 32 ডিরেক্টরির চেয়ে ভাগ করা উপাদানগুলি সঞ্চয় করার জন্য একটি নিরাপদ জায়গা। আপনার বক্তব্যটি যে কয়েকটি অ্যাপ এটি ব্যবহার করে তা বিতর্কযোগ্য। আপনাকে উদ্ধৃত করে: "একই সিস্টেমে 32-বিট এবং 16-বিট প্রোগ্রামের জন্য তাদের এই হুপগুলির মধ্যে দিয়ে ঝাঁপিয়ে পড়েনি। আমি কখনও কোনও প্রোগ্রামফিল (16) বা এরকম কিছু দেখেছি বলে মনে পড়ছে না [...] এটি সম্পর্কে অংশটি প্রোগ্রামারদের পক্ষে সুবিধার্থে যদিও যুক্তিযুক্ত হয়ে উঠছে। " ঠিক আছে, হ্যাঁ .. প্রোগ্রামাররা করে। আমরা সব পরে অ্যাপ্লিকেশন লিখুন।
জেসন লক

তাই না?
Synetech

এটি কেবল পুনরায় পড়ুন .. তিনি তার উত্তরে এটি আরও ভাল বলেছেন - superuser.com/a/442253/142951 । আপনি যদি বিকাশকারী না হন তবে আপনি উদ্দেশ্যটি দেখতে পাবেন না।
জেসন লক

0

এটি মোটেই প্রয়োজন হয় না। উদাহরণস্বরূপ আমার ওয়ার্কিং কম্পিউটারে আমি প্রতিটি অ্যাপ্লিকেশনটি C:\MyPrograms\আইটি বিভাগ দ্বারা ইনস্টল থাকা অ্যাপ্লিকেশনগুলি থেকে পৃথক করার জন্য ফোল্ডারে ইনস্টল করি ।

অবশ্যই, এটি আমাকে একটি অ্যাপ্লিকেশনের উভয় সংস্করণ (32 এবং 64 বিট) ইনস্টল করতে বাধা দেয়, তবে এটি আমার ক্ষেত্রে কোনও সমস্যা নয়।

আপনি যখনই কোনও প্রোগ্রাম চালু করেন তখন সর্বদা প্রথম ডিএলএল C:\Windows\System32\ntdll.dllকার্যকর করা হয়। এই ডিএলএল নির্ধারণ করে যে আপনার প্রোগ্রামটি 32 বা 64 বিটের অ্যাপ্লিকেশন কিনা। এর উপর নির্ভর করে আপনাকে পুনঃনির্দেশিত করা হয়েছে WoW64যা ইতিমধ্যে বেশ কয়েকটি উত্তরে উল্লেখ করা হয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.