इस लेख में, हम दिखाएंगे कि यूजर अकाउंट कंट्रोल सर्विस को पूरी तरह से अक्षम किए बिना किसी विशिष्ट एप्लिकेशन के लिए UAC को चुनिंदा रूप से कैसे अक्षम किया जाए। RunAsInvoker कम्पैटिबिलिटी फ्लैग का उपयोग करके एक ऐप के लिए UAC को बंद करने के कई तरीकों पर विचार करें।
यूजर अकाउंट कंट्रोल उपयोगकर्ता से किसी भी कार्रवाई की पुष्टि करने के लिए कहता है जिसके लिए एडमिनिस्ट्रेटर विशेषाधिकारों की आवश्यकता होती है। यह विंडोज को कई खतरों (वायरस, ट्रोजन, वर्म्स, रूटकिट्स, आदि) से बचाने के लिए एक काफी प्रभावी तंत्र है। कुछ उपयोगकर्ताओं को पॉप-अप UAC विंडोज परेशान लगती हैं, और वे इस सुरक्षा सुविधा को अक्षम करना पसंद करते हैं, हालांकि माइक्रोसॉफ्ट और सुरक्षा विशेषज्ञ ऐसा न करने की पुरजोर सिफारिश करते हैं।
RunAsInvoker फ्लैग आपको पैरेंट प्रोसेस से विरासत में मिले मार्कर के साथ एप्लिकेशन चलाने की अनुमति देता है। यह एप्लिकेशन मैनिफेस्ट के प्रसंस्करण और इंस्टॉलर प्रक्रियाओं की खोज को रद्द करता है। यह पैरामीटर एडमिनिस्ट्रेटर विशेषाधिकार प्रदान नहीं करता, बल्कि केवल UAC प्रॉम्प्ट को बायपास करता है।
उदाहरण के रूप में, हम रजिस्ट्री एडिटर (regedit.exe) के लिए यूजर अकाउंट कंट्रोल प्रॉम्प्ट को अक्षम करेंगे। इस तथ्य के बावजूद कि मेरे अकाउंट में लोकल एडमिनिस्ट्रेटर विशेषाधिकार हैं, जब मैं यूटिलिटी चलाता हूं, तो लॉन्च की पुष्टि करने के लिए एक UAC अनुरोध अभी भी दिखाई देता है।

यदि प्रोग्राम को एडमिनिस्ट्रेटर अनुमतियों की आवश्यकता है क्योंकि यह सिस्टम सेटिंग्स या फाइलों को बदलता है, तो UAC अक्षम करने के बाद एप्लिकेशन में यूजर विशेषाधिकार नहीं बढ़ेंगे। प्रोग्राम अभी भी वर्तमान यूजर अनुमतियों के तहत चलेगा, और यदि आपके पास ये परिवर्तन करने का अधिकार नहीं है, तो प्रोग्राम उन्हें नहीं कर पाएगा। ऐसे अनुप्रयोगों की एक छोटी संख्या भी है जो केवल "एडमिनिस्ट्रेटर के रूप में" मोड में चलते हैं, RunAsInvoker कम्पैटिबिलिटी फ्लैग को नजरअंदाज करते हुए।
एप्लिकेशन कम्पैटिबिलिटी टूलकिट का उपयोग करके प्रोग्राम के लिए UAC अक्षम करना
हमें एप्लिकेशन कम्पैटिबिलिटी टूलकिट इंस्टॉल करना होगा, जो विंडोज ADK का हिस्सा है। विंडोज 10 के लिए विंडोज ADK का नवीनतम संस्करण यहां डाउनलोड करें।
adksetup.exe फाइल चलाएं और इंस्टॉलेशन के दौरान (प्रोग्राम को इंटरनेट एक्सेस की आवश्यकता है), केवल एप्लिकेशन कम्पैटिबिलिटी टूल्स आइटम चुनें।
माइक्रोसॉफ्ट एप्लिकेशन कम्पैटिबिलिटी टूल्स नए विंडोज वर्जन पर माइग्रेट करते समय ऐप कम्पैटिबिलिटी समस्याओं को ठीक करने के लिए टूल्स का एक मुफ्त सेट है।

सिस्टम में एप्लिकेशन कम्पैटिबिलिटी एडमिनिस्ट्रेटर के दो वर्जन हैं - 32-बिट और 64-बिट। उस एप्लिकेशन की बिटनेस के आधार पर एप्लिकेशन कम्पैटिबिलिटी एडमिनिस्ट्रेटर का वर्जन चलाएं जिसके लिए आप UAC अनुरोध को अक्षम करना चाहते हैं।

कम्पैटिबिलिटी एडमिनिस्ट्रेटर (32-बिट) को एडमिनिस्ट्रेटर विशेषाधिकारों के साथ चलाएं (!)। कस्टम डेटाबेस नोड में, न्यू डेटाबेस पर राइट-क्लिक करें और नया बनाएं → एप्लिकेशन फिक्स चुनें।

निम्नलिखित विंडो में, एप्लिकेशन का नाम (regedit), विक्रेता का नाम (माइक्रोसॉफ्ट) और निष्पादन योग्य फाइल का पथ (C:\Windows\System32\regedit.exe) दर्ज करें।

कॉन्फिगरेशन विजार्ड की अगली विंडो (कम्पैटिबिलिटी मोड) को नेक्स्ट दबाकर छोड़ दें। कम्पैटिबिलिटी फिक्सेस विंडो में, विकल्प RunAsInvoker चेक करें।
आप टेस्ट रन बटन दबाकर सुनिश्चित कर सकते हैं कि एप्लिकेशन UAC के बिना चल सकता है।

मैचिंग इंफॉर्मेशन डायलॉग में, आप निर्दिष्ट कर सकते हैं कि किन एप्लिकेशन पैरामीटर्स को चेक किया जाना चाहिए (वर्जन, चेकसम, साइज, आदि)। मैंने COMPANY_NAME, PRODUCT_NAME और ORIGINAL_FILENAME विकल्पों को चेक छोड़ दिया ताकि अगले विंडोज 10 अपडेट के बाद कम्पैटिबिलिटी पैच फाइल को फिर से बनाने से बचा जा सके।

टिप. हैकर द्वारा एक्जीक्यूटेबल की स्पूफिंग से बचाने के लिए, आप फाइल चलाते समय अतिरिक्त चेक का अनुरोध कर सकते हैं (उदाहरण के लिए, CHECKSUM, FILE_VERSION या FILE_SIZE वेरिफिकेशन, आदि)। यह ध्यान दिया जाना चाहिए कि अतिरिक्त चेक ऐप स्टार्टअप को धीमा कर देंगे।
फिनिश पर क्लिक करें और उस फाइल का नाम निर्दिष्ट करें जिसमें कम्पैटिबिलिटी फिक्सिंग पैकेज को सेव किया जाना है, उदाहरण के लिए, regedit.sdb। इस फाइल में निर्दिष्ट कम्पैटिबिलिटी विकल्पों के साथ एप्लिकेशन शुरू करने के निर्देश होंगे।

अब आपको केवल कम्पैटिबिलिटी फिक्स पैकेज को हमारे एप्लिकेशन पर लागू करना है। आप इसे या तो कम्पैटिबिलिटी एडमिनिस्ट्रेटर कंसोल से (मेनू में इंस्टॉल चुनकर) या कमांड प्रॉम्प्ट से कर सकते हैं।

ऐसा करने के लिए, एलीवेटेड कमांड प्रॉम्प्ट चलाएं और निम्नलिखित कमांड निष्पादित करें:
sdbinst -q c:\ps\regedit.sdb
यदि आपने इसे सही किया है, तो पैकेज की सफल इंस्टॉलेशन का संदेश दिखाई देगा।
regedit की इंस्टॉलेशन पूर्ण।

पैकेज इंस्टॉल होने के बाद, इंस्टॉल्ड विंडोज प्रोग्राम की सूची (प्रोग्राम्स एंड फीचर्स) में संबंधित रिकॉर्ड दिखाई देगा।

अब लोकल एडमिनिस्ट्रेटर अनुमतियों के बिना यूजर सेशन में एप्लिकेशन चलाने का प्रयास करें। अब इसे UAC अनुरोध के बिना शुरू होना चाहिए।
अब चल रहे एप्लिकेशन के विशेषाधिकारों की जांच करें। टास्क मैनेजर चलाएं, प्रोसेस टैब पर जाएं, "एलीवेटेड" कॉलम जोड़ें। सुनिश्चित करें कि regedit.exe प्रोसेस यूजर द्वारा अनप्रिविलेज्ड मोड में शुरू किया गया है (Elevated = No)।

इस रजिस्ट्री एडिटर प्रोसेस में, यूजर केवल अपनी रजिस्ट्री कीज़ और पैरामीटर्स को संपादित कर सकता है। लेकिन यदि आप सिस्टम HKLM कुंजी में कुछ संपादित/बनाने का प्रयास करते हैं, तो एक त्रुटि दिखाई देती है: "आपके पास आवश्यक अनुमतियां नहीं हैं"।

बाद में इस कम्पैटिबिलिटी फिक्स को ग्रुप पॉलिसीज़ का उपयोग करके सभी यूजर कंप्यूटर्स पर वितरित किया जा सकता है। इस प्रकार आप एक्टिव डायरेक्टरी डोमेन में कई कंप्यूटर्स पर विशिष्ट एप्लिकेशन के लिए UAC चेक को अक्षम कर सकते हैं।
कम्पैटिबिलिटी फिक्स को हटाने के लिए, कमांड चलाएं:
sdbinst –u c:\ps\regedit.sdb
रजिस्ट्री के माध्यम से RunAsInvoker ऐप फ्लैग सक्षम करें
आप विंडोज 10/8.1/7 में रजिस्ट्री के माध्यम से RUNASINVOKER कम्पैटिबिलिटी फ्लैग को सक्षम कर सकते हैं। एप्लिकेशन कम्पैटिबिलिटी फ्लैग को एकल या सभी कंप्यूटर उपयोगकर्ताओं के लिए सेट किया जा सकता है।
उदाहरण के लिए, regedit ऐप के लिए आपको निम्नलिखित रजिस्ट्री कुंजी HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers में एक नया रजिस्ट्री पैरामीटर (REG_SZ) बनाना होगा:
- मान नाम: C:\windows\regedit.exe
- मान डेटा: RunAsInvoker

यदि आप सभी स्थानीय कंप्यूटर उपयोगकर्ताओं के लिए एप्लिकेशन कम्पैटिबिलिटी मोड सक्षम करना चाहते हैं, तो आपको इस पैरामीटर को एक अलग रजिस्ट्री कुंजी में बनाना होगा:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers.
डोमेन में, आप इन रजिस्ट्री सेटिंग्स को GPO के माध्यम से उपयोगकर्ताओं पर आयात/तैनात कर सकते हैं।
RunAsInvoker मोड में एप्लिकेशन चलाने के लिए बैच फाइल
एडमिन विशेषाधिकारों के बिना और UAC प्रॉम्प्ट को बायपास करके प्रोग्राम चलाने का एक और तरीका है (लेख देखें)।
बस निम्नलिखित कोड के साथ एक .bat फाइल बनाएं:
Set ApplicationPath="C:\windows\regedit.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

जब इस बैट फाइल को एक सामान्य यूजर के तहत चलाया जाता है, तो निर्दिष्ट एप्लिकेशन UAC प्रॉम्प्ट के बिना शुरू होगा।
तो, हमने देखा कि यूजर अकाउंट कंट्रोल को पूरी तरह से अक्षम किए बिना किसी विशिष्ट प्रोग्राम के लिए UAC को कैसे अक्षम किया जाए। यह आपको विंडोज प्रोग्राम को नॉन-एडमिन के तहत UAC प्रॉम्प्ट के बिना और एडमिनिस्ट्रेटर पासवर्ड दर्ज किए बिना चलाने की अनुमति देगा।