এই আর্টিকেলে আমরা দেখাবো কিভাবে User Account Control সার্ভিস সম্পূর্ণ ডিজেবল না করেই একটি নির্দিষ্ট অ্যাপ্লিকেশনের জন্য UAC সিলেক্টিভলি ডিজেবল করা যায়। RunAsInvoker কম্প্যাটিবিলিটি ফ্ল্যাগ ব্যবহার করে একক অ্যাপের জন্য UAC অফ করার несколько পদ্ধতি বিবেচনা করব।
User Account Control অ্যাডমিনিস্ট্রেটর প্রivilেজ যায়গায় যেকোনো অ্যাকশন কনফার্ম করতে ইউজাকে চায়। এটি Windows-কে বেশ কয়েকটি হুমকি (ভাইরাস, ট্রোজান, ওয়ার্ম, রুটকিট, ইত্যাদি) থেকে রক্ষা করার কার্যকর একটি 메কানিজম। কিছু ব্যবহারকারী পপ-আপ UAC উইন্ডোها অবিধা বলে মনে করে এবং এই সিকিউরিটি ফিচারটি ডিজেবল করতে চায়, যদিও Microsoft এবং সিকিউরিটি এক্সপার্টরা সেটি না করার দৃঢ় সুপারিশ দেয়।
RunAsInvoker ফ্ল্যাগটি আপনাকে প্যারেন্ট প্রসেস থেকে ইনহেরিট করা একটি مارকার সহ অ্যাপ্লিকেশন রান করতে দেয়। এটি অ্যাপ্লিকেশন ম্যানিফেস্টের প্রসেসিং এবং ইনস্টলার প্রসেসের ডিসকভারি বাতিল করে। এই প্যারামিটার অ্যাডমিনিস্ট্রেটর প্রivilেজ দেয় না, শুধুমাত্র UAC প্রম্পট বাইপাস করে।
উদাহরণস্বরূপ, আমরা রেজিস্ট্রি এডিটর (regedit.exe) এর জন্য User Account Control প্রম্পট ডিজেবল করব। যেহেতু আমার অ্যাকাউন্টে লোকাল অ্যাডমিনিস্ট্রেটর প্রivilেজ থাকা সত্ত্বেও, ইউটিলিটি রান করার সময় এখনও একটি UAC রিকোয়েস্ট আসে লঞ্চ কনফার্ম করার জন্য।

যদি প্রোগ্রামটি সিস্টেম সেটিংস বা ফাইল পরিবর্তন করার জন্য অ্যাডমিনিস্ট্রেটর পারমিশন চায়, তবে UAC ডিজেবল করার পর অ্যাপ্লিকেশনে ইউজার প্রivilেজ এলিভেট হবে না। প্রোগ্রামটি এখনও করেন্ট ইউজার পারমিশন tournée রান করবে, এবং যদি আপনার সেসে পরিবর্তন করার অথরিটি না থাকে, তবে প্রোগ্রামটি সেগুলো করতে পারবে না। এছাড়া কিছু কিছু অ্যাপ্লিকেশন আছে যা শুধু "As an administrator" মোডে রান করে, RunAsInvoker কম্প্যাটিবিলিটি ফ্ল্যাগকে উপেক্ষা করে।
সামগ্রী:
- Application Compatibility Toolkit ব্যবহার করে একটি প্রোগ্রামের জন্য UAC ডিজেবল করা
- রেজিস্ট্রি মাধ্যমে RunAsInvoker অ্যাপ ফ্ল্যাগ সক্রিয় করা
- RunAsInvoker মোডে অ্যাপ্লিকেশন রান করার ব্যাচ ফাইল
Application Compatibility Toolkit ব্যবহার করে একটি প্রোগ্রামের জন্য UAC ডিজেবল করা
আমাদের Application Compatibility Toolkit ইনস্টল করতে হবে, যা Windows ADK-এর অংশ। Windows 10-এর জন্য লেটেস্ট Windows ADK এখান থেকে ডাউনলোড করুন।
adksetup.exe ফাইলটি রান করুন এবং ইনস্টলেশনের সময় (প্রোগ্রামটিকে ইন্টারনেট এক্সেস প্রয়োজন), শুধু Application Compatibility Tools আইটেম সিলেক্ট করুন।
Microsoft Application Compatibility Tools নতুন Windows ভার্সনে মাইগ্রেট করার সময় অ্যাপ কম্প্যাটিবিলিটি সমস্যা সমাধান করার জন্য একটি ফ্রি টুলসেট।

সিস্টেমে Application Compatibility Administrator-এর দুটি ভার্সন আছে - ৩২-বিট এবং ৬৪-বিট। আপনি যে অ্যাপ্লিকেশনের জন্য UAC রিকোয়েস্ট ডিজেবল করতে চান তার বিটনেসের উপর ভিত্তি করে Application Compatibility Administrator-এর ভার্সন রান করুন।

Compatibility Administrator (32-bit) অ্যাডমিনিস্ট্রেটর প্রivilেজে রান করুন (!)। Custom Databases নোডে, New Database 上右-ক্লিক করুন এবং Create New -> Application Fix সিলেক্ট করুন।

নিচের উইন্ডোতে, অ্যাপ্লিকেশন নাম (regedit), ভেন্ডর নাম (Microsoft) এবং এক্সিকিউটেবল ফাইলের পাথ (C:\Windows\System32\regedit.exe) লিখুন।

কনফিগারেশন উইজার্ডের পরের উইন্ডো (Compatibility Mode) কিপে Next চাপুন। Compatibility Fixes উইন্ডোতে, RunAsInvoker অপশনটি চেক করুন।
আপনি Test Run বাটন চাপিয়ে নিশ্চিত করতে পারেন যে অ্যাপ্লিকেশনটি UAC ছাড়া রান করতে পারে।

Matching Information ডায়লগে, আপনি নির্দিষ্ট করতে পারেন কোন অ্যাপ্লিকেশন প্যারামিটারগুলো চেক করা হবে (ভার্সন, চেকসাম, সাইজ, ইত্যাদি)। আমি COMPANY_NAME, PRODUCT_NAME এবং ORIGINAL_FILENAME অপশনগুলো চেক করা রেখেছি যাতে পরবর্তী Windows 10 আপডেটের পর কম্প্যাটিবিলিটি প্যাচ ফাইল পুনরায় তৈরি না করতে হয়।

Finish ক্লিক করুন এবং কম্প্যাটিবিলিটি ফিক্স প্যাকেজটি কোনে ফাইলে সেভ করার নাম দিন, যেমন, regedit.sdb। এই ফাইলটি নির্দিষ্ট কম্প্যাটিবিলিটি অপশনসহ অ্যাপ্লিকেশন শুরু করার নির্দেশনা ধারণ করবে।

এখন শুধু কম্প্যাটিবিলিটি ফিক্স প্যাকেজটি আমাদের অ্যাপ্লিকেশনে প্রয়োগ করা বাকি। আপনি এটি Compatibility Administrator কনসোল থেকে (মেনুতে Install সিলেক্ট করে) বা কমান্ড প্রম্পট থেকে করতে পারেন।

এজন্য, এলিভেটেড কমান্ড প্রম্পট রান করুন এবং নিচের কমান্ডটি এক্সিকিউট করুন:
sdbinst -q c:\ps\regedit.sdb
যদি আপনি সঠিকভাবে করলে, সফল প্যাকেজ ইনস্টলেশনের মেসেজ দেখাবে।
Installation of regedit complete.
প্যাকেজ ইনস্টল হলে, ইনস্টল্ড Windows প্রোগ্রামের তালিকায় (Programs and Features) সংশ্লিষ্ট রেকর্ড দেখা যাবে।

এখন লোকাল অ্যাডমিনিস্ট্রেটর পারমিশন ছাড়া একটি ইউজার সেশনে অ্যাপ্লিকেশন রান করে দেখুন। এখন এটি UAC রিকোয়েস্ট ছাড়া শুরু হওয়া উচিত।
এখন রানিং অ্যাপ্লিকেশনের প্রivilেজ চেক করুন। Task Manager রান করুন, Process ট্যাবে যান, "Elevated" কলাম যোগ করুন। নিশ্চিত করুন যে regedit.exe প্রসেসটি ইউজার দ্বারা আনপ্রিভিলেজড মোডে শুরু হয়েছে (Elevated = No)।

এই রেজিস্ট্রি এডিটর প্রসেসে, ইউজার শুধু নিজস্ব রেজিস্ট্রি কী এবং প্যারামিটার এডিট করতে পারবে। কিন্তু আপনি যদি সিস্টেম HKLM কী-এ কিছু এডিট/ক্রিয়েট করার চেষ্টা করেন, তবে এরর আসবে: "You don't have the requisite permissions"।

পরে এই কম্প্যাটিবিলিটি ফিক্সটি গ্রুপ পলিসি ব্যবহার করে সব ইউজার কম্পিউটারে ডিস্ট্রিবিউট করা যাবে। এইভাবে আপনি Active Directory ডোমেনে একাধিক কম্পিউটারে নির্দিষ্ট অ্যাপ্লিকেশনগুলোর জন্য UAC চেক ডিজেবল করতে পারেন।
কম্প্যাটিবিলিটি ফিক্সটি মুছে ফেলতে কমান্ডটি রান করুন:
sdbinst –u c:\ps\regedit.sdb
রেজিস্ট্রি মাধ্যমে RunAsInvoker অ্যাপ ফ্ল্যাগ সক্রিয় করা
আপনি Windows 10/8.1/7-এ রেজিস্ট্রি মাধ্যমে RUNASINVOKER কম্প্যাটিবিলিটি ফ্ল্যাগ সক্রিয় করতে পারেন। অ্যাপ্লিকেশন কম্প্যাটিবিলিটি ফ্ল্যাগটি একক বা সকল কম্পিউটার ইউজারের জন্য সেট করা যায়।
উদাহরণস্বরূপ, regedit অ্যাপের জন্য আপনাকে নিচের রেজিস্ট্রি কী HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers-এ একটি নতুন রেজিস্ট্রি প্যারামিটার (REG_SZ) তৈরি করতে হবে:
- Value name: C:\windows\regedit.exe
- Value data: RunAsInvoker

আপনি যদি সকল লোকাল কম্পিউটার ইউজারের জন্য অ্যাপ্লিকেশন কম্প্যাটিবিলিটি মোড সক্রিয় করতে চান, তবে আপনাকে এই প্যারামিটারটি ভিন্ন রেজিস্ট্রি কী-এ তৈরি করতে হবে:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers.
ডোমেনে, আপনি এই রেজিস্ট্রি সেটিংস GPO মাধ্যমে ইউজারদের কাছে ইম্পোর্ট/ডিপ্লয় করতে পারেন।
RunAsInvoker মোডে অ্যাপ্লিকেশন রান করার ব্যাচ ফাইল
অ্যাডমিন প্রivilেজ ছাড়া এবং UAC প্রম্পট বাইপাস করে প্রোগ্রাম রান করার আরেকটি উপায় আছে (আর্টিকেলটি দেখুন)।
সاده নিচের কোড সহ একটি .bat ফাইল তৈরি করুন:
Set ApplicationPath="C:\windows\regedit.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

যখন এই ব্যাচ ফাইলটি একটি সাধারণ ইউজার অধীনে রান করবে, নির্দিষ্ট অ্যাপ্লিকেশনটি UAC প্রম্পট ছাড়া শুরু হবে।
তাহলে, আমরা দেখেছি কিভাবে User Account Control সম্পূর্ণ ডিজেবল না করেই একটি নির্দিষ্ট প্রোগ্রামের জন্য UAC ডিজেবল করা যায়। এটি আপনাকে Windows প্রোগ্রামগুলো নন-অ্যাডমিন অধীনে UAC প্রম্পট ছাড়া এবং অ্যাডমিনিস্ট্রেটর পাসওয়ার্ড দিয়ে না রান করতে দেবে।