प्रारंभ होने पर, कुछ प्रोग्रामों को अनुमति उन्नयन (एप्लिकेशन आइकन के बगल में ढाल) की आवश्यकता होती है, लेकिन वास्तव में उन्हें अपने सामान्य संचालन के लिए व्यवस्थापकीय विशेषाधिकारों की आवश्यकता नहीं होती है। उदाहरण के लिए, आप अपने उपयोगकर्ताओं के लिए ऐप फ़ोल्डर में मैन्युअल रूप से अनुमति दे सकते हैं कार्यक्रम फाइलें और/या प्रोग्राम द्वारा उपयोग की जाने वाली रजिस्ट्री कुंजियाँ। यदि कंप्यूटर पर उपयोगकर्ता खाता नियंत्रण सक्षम है, तो एक UAC संकेत दिखाई देगा और यदि आप एक मानक उपयोगकर्ता के रूप में इस तरह के प्रोग्राम को चलाने का प्रयास करते हैं तो Windows उपयोगकर्ता से व्यवस्थापक पासवर्ड दर्ज करने के लिए कहेगा। इस तंत्र को बायपास करने के लिए, कई व्यवस्थापक सामान्य रूप से UAC को अक्षम कर देते हैं या स्थानीय समूह “व्यवस्थापकों” में एक उपयोगकर्ता खाता जोड़कर व्यवस्थापक अधिकार प्रदान करते हैं। बेशक, दोनों तरीके सुरक्षित नहीं हैं। व्यापक उपयोग के लिए इनमें से किसी भी विधि की अनुशंसा नहीं की जाती है क्योंकि वे Windows सुरक्षा को कम करते हैं।
इस लेख में, हम देखेंगे कि एक ऐसे प्रोग्राम को कैसे चलाना है जिसके लिए एक मानक उपयोगकर्ता के रूप में प्रशासक की अनुमति की आवश्यकता होती है और यूएसी एलिवेशन प्रॉम्प्ट को दबा देता है।
प्रोग्राम चलाने के लिए गैर-व्यवस्थापक उपयोगकर्ताओं के लिए अनुमतियाँ कॉन्फ़िगर करें
Windows प्रोग्राम प्रारंभ होने पर आपसे व्यवस्थापकीय अनुमतियाँ माँग सकता है यदि:
- प्रोग्राम को एक सिस्टम निर्देशिका या फ़ाइल तक पहुँचने की आवश्यकता होती है जिसके लिए गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं को NTFS की अनुमति नहीं दी गई है;
- यदि कार्यक्रम एक विशेष ध्वज के साथ बनाया गया था जिसके लिए स्टार्टअप पर ऊंचाई की आवश्यकता होती है (
requireAdministrator
).
पहले मामले में, समस्या को हल करने के लिए जो कुछ भी आवश्यक है वह प्रोग्राम निर्देशिका या आवश्यक सिस्टम निर्देशिका/फ़ाइल के लिए आरडब्ल्यू या पूर्ण नियंत्रण उपयोगकर्ता अनुमतियां प्रदान करना है। उदाहरण के लिए, एक प्रोग्राम अपनी फाइलों (लॉग्स, कॉन्फ़िगरेशन फाइल्स आदि) को अपने फोल्डर में स्टोर करता है C:\Program Files (x86)\SomeApp
या कुछ सिस्टम निर्देशिका। प्रोग्राम के ठीक से काम करने के लिए उपयोगकर्ता के पास इन फ़ाइलों को लिखने की अनुमति होनी चाहिए। इस प्रोग्राम को सामान्य रूप से काम करने के लिए, व्यवस्थापकीय अनुमतियों की आवश्यकता होती है।
प्रोग्राम को एक गैर-व्यवस्थापक उपयोगकर्ता के रूप में चलाने की अनुमति देने के लिए, उपयोगकर्ता (या अंतर्निहित उपयोगकर्ता समूह) को मैन्युअल रूप से NTFS फ़ाइल सिस्टम स्तर पर फ़ाइल/निर्देशिका को संशोधित/लिखने की अनुमति देने के लिए पर्याप्त है।
उन फ़ाइलों, फ़ोल्डरों और रजिस्ट्री कुंजियों की सूची खोजने के लिए जिन्हें प्रोग्राम एक्सेस कर रहा है, का उपयोग करें प्रक्रिया मॉनिटर औजार (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon). प्रोग्राम प्रक्रिया के नाम से फ़िल्टर को सक्षम करें और सभी संसाधनों को खोजें, यदि आप उन्हें एक्सेस करने का प्रयास करते हैं, तो एक्सेस अस्वीकृत प्रदर्शित होता है। फ़ोल्डर्स/फ़ाइलों/रजिस्ट्री कुंजियों के लिए आवश्यक अनुमतियां प्रदान करें।
टिप्पणी. दरअसल, C: \ Program Files निर्देशिका में बदलते एप्लिकेशन डेटा को स्टोर करने की अनुशंसा नहीं की जाती है। ऐप डेटा को यूजर प्रोफाइल में स्टोर करना बेहतर है। लेकिन यह ऐप डेवलपर्स के आलस्य और अक्षमता का सवाल है।
मानक उपयोगकर्ताओं को एक प्रोग्राम चलाने की अनुमति दें जिसके लिए व्यवस्थापकीय विशेषाधिकारों की आवश्यकता होती है
पहले हमने वर्णन किया था कि किसी विशिष्ट प्रोग्राम के लिए UAC प्रॉम्प्ट को कैसे अक्षम किया जाए RunAsInvoker पैरामीटर। हालाँकि, यह विधि पर्याप्त लचीली नहीं है।
आइए किसी भी प्रोग्राम को व्यवस्थापक विशेषाधिकारों के बिना (व्यवस्थापक पासवर्ड दर्ज किए बिना) और UAC सक्षम (UAC स्लाइडर के स्तर 4, 3 या 2) के साथ चलाने के लिए बाध्य करने का एक सरल तरीका देखें।
रजिस्ट्री संपादक को एक उदाहरण के रूप में लेते हैं — regedit.exe (यह C:\Windows\ फ़ोल्डर में स्थित है)। ऐप आइकन के बगल में UAC शील्ड पर ध्यान दें। इस आइकन का अर्थ है कि इस प्रोग्राम को चलाने के लिए यूएसी उन्नयन आवश्यक है
जब आप दौड़ते हैं regedit.exe
आपको एक उपयोगकर्ता खाता नियंत्रण संकेत दिखाई देगा जो व्यवस्थापक क्रेडेंशियल (Do you want to allow this app to make changes to your device?
). यदि आप पासवर्ड प्रदान नहीं करते हैं और उन्नयन की पुष्टि नहीं करते हैं, तो ऐप प्रारंभ नहीं होगा।
आइए इस कार्यक्रम के लिए UAC अनुरोध को बायपास करने का प्रयास करें। पाठ फ़ाइल बनाएँ रन-एज़-नॉन-एडमिन.बैट आपके डेस्कटॉप पर निम्नलिखित कोड शामिल है:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
व्यवस्थापक विशेषाधिकारों के बिना regedit.exe को चलाने के लिए और UAC प्रॉम्प्ट को दबाने के लिए, डेस्कटॉप पर इस BAT फ़ाइल को चलाने के लिए आप जिस EXE फ़ाइल को चलाना चाहते हैं, उसे सरल खींचें।
रजिस्ट्री संपादक को यूएसी संकेत के बिना और व्यवस्थापक पासवर्ड दर्ज किए बिना प्रारंभ करना चाहिए। यदि आप टास्क मैनेजर खोलते हैं और जोड़ते हैं ऊपर उठाया हुआ कॉलम, आप देखेंगे कि regedit.exe प्रक्रिया उन्नत स्थिति के बिना है (गैर-व्यवस्थापक उपयोगकर्ता अनुमतियों के साथ चलाएँ)।
HKEY_LOCAL_MACHINE रजिस्ट्री हाइव के अंतर्गत किसी भी आइटम को संपादित करने का प्रयास करें। जैसा कि आप देख सकते हैं, उपयोगकर्ता इस रजिस्ट्री कुंजी में आइटम को संपादित नहीं कर सकता (उपयोगकर्ता के पास सिस्टम रजिस्ट्री कुंजियों के लिए लिखने की अनुमति नहीं है)। हालाँकि, आप अपने उपयोगकर्ता हाइव (HKEY_CURRENT_USER) में रजिस्ट्री कुंजियाँ और पैरामीटर जोड़ या संपादित कर सकते हैं।
इसी तरह आप BAT फाइल का इस्तेमाल करके कोई भी ऐप चला सकते हैं। निष्पादन योग्य के लिए बस पथ निर्दिष्ट करें।
रन-एप-as-non-admin.batSet ApplicationPath="C:\Program Files\SomeApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"
आप एक संदर्भ मेनू भी जोड़ सकते हैं जो सभी ऐप्स को बिना उन्नयन के चलाने की अनुमति देता है। ऐसा करने के लिए, RunAsUser.REG फ़ाइल बनाएं, निम्न कोड को इसमें कॉपी करें, सहेजें, और इसे reg फ़ाइल पर डबल क्लिक करके Windows रजिस्ट्री में आयात करें (आपको इस परिवर्तन को लागू करने के लिए व्यवस्थापकीय अनुमतियों की आवश्यकता होगी)।
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker] @="Run as user without UAC privilege elevation" [HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command] @="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""
उसके बाद, व्यवस्थापक विशेषाधिकारों के बिना किसी भी एप्लिकेशन को चलाने के लिए, बस “चुनें”UAC विशेषाधिकार उन्नयन के बिना उपयोगकर्ता के रूप में चलाएँ” विंडोज फाइल एक्सप्लोरर संदर्भ मेनू से।
मैं आपको याद दिलाना चाहता हूं कि प्रोग्राम के लिए RUNASINVOKER मोड का उपयोग करने से आप अनुमतियों को बढ़ा नहीं पाएंगे। RunAsInvoker UAC प्रॉम्प्ट को दबा देता है और प्रोग्राम को बताता है कि इसे वर्तमान उपयोगकर्ता के विशेषाधिकारों के साथ चलना चाहिए, और विशेषाधिकारों के उन्नयन के लिए नहीं कहना चाहिए। यदि किसी प्रोग्राम को वास्तव में सिस्टम सेटिंग्स या फ़ाइलों को संपादित करने के लिए उन्नत विशेषाधिकारों की आवश्यकता होती है, तो यह काम नहीं करेगा या व्यवस्थापक अनुमतियों के लिए फिर से पूछेगा।
सीएमडी में RunAsInvoker विकल्प के साथ यूएसी को कैसे बायपास करें?
__COMPAT_LAYER पर्यावरण चर आपको अनुप्रयोगों के लिए विभिन्न अनुकूलता स्तर सेट करने की अनुमति देता है ( अनुकूलता टैब एक EXE फ़ाइल के गुणों में)। यह चर आपको संगतता सेटिंग्स निर्दिष्ट करने की अनुमति देता है जिसके साथ आप प्रोग्राम चलाना चाहते हैं। उदाहरण के लिए, 640 × 480 रिज़ॉल्यूशन के साथ Windows 8 संगतता मोड में ऐप प्रारंभ करने के लिए, निम्न सेट करें:
set __COMPAT_LAYER=Win8RTM 640x480
__COMPAT_LAYER चर में कुछ विकल्प हैं जिनमें हम रुचि रखते हैं। निम्नलिखित पैरामीटर हैं:
- RunAsInvoker – यूएसी प्रॉम्प्ट के बिना मूल प्रक्रिया के विशेषाधिकारों के साथ एक ऐप चलाएं;
- RunAsHighest – उपयोगकर्ता के लिए उपलब्ध उच्चतम स्तर की अनुमति के साथ एक प्रोग्राम चलाएं (यदि उपयोगकर्ता के पास व्यवस्थापकीय विशेषाधिकार हैं तो UAC संकेत दिखाई देगा);
- RunAsAdmin – व्यवस्थापक के रूप में एक ऐप चलाएं (यूएसी प्रॉम्प्ट हमेशा दिखाई देगा))।
इसका मतलब यह है कि RunAsInvoker पैरामीटर व्यवस्थापक विशेषाधिकार प्रदान नहीं करता है, यह केवल यूएसी प्रॉम्प्ट को दबा देता है।
निम्न आदेश वर्तमान प्रक्रिया के लिए RunAsInvoker मोड को सक्षम करता है और निर्दिष्ट प्रोग्राम को बिना उन्नयन के चलाता है:
set __COMPAT_LAYER=RUNASINVOKER
start "" "C:\Program Files\MyApp\testapp.exe"
EXE फ़ाइल मेनिफेस्ट में RunAsInvoker मोड को सक्षम करें
जैसा कि ऊपर उल्लेख किया गया है, विंडोज़ उन कार्यक्रमों के लिए UAC शील्ड आइकन प्रदर्शित करता है जिन्हें चलाने के लिए उन्नत विशेषाधिकारों की आवश्यकता होती है। प्रोग्राम में एप्लिकेशन को संकलित करते समय डेवलपर्स इस आवश्यकता को निर्धारित करते हैं घोषणापत्र
आप किसी भी exe फ़ाइल के मेनिफेस्ट को संपादित कर सकते हैं और प्रोग्राम को उन्नत मोड में चलाने के लिए आवश्यकता को अक्षम कर सकते हैं।
मुफ्त का प्रयोग करें संसाधन हैकर कार्यक्रम प्रकट संपादित करने के लिए उपकरण। संसाधन हैकर में निष्पादन योग्य प्रोग्राम खोलें।
बाईं ओर के पेड़ में, पर जाएँ घोषणापत्र अनुभाग और प्रोग्राम मेनिफेस्ट खोलें। निम्नलिखित एक्सएमएल अनुभाग पर ध्यान दें:
<requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges>
साथ आवश्यकता प्रशासक विकल्प सक्षम, Windows हमेशा इस प्रोग्राम को व्यवस्थापक अधिकारों के साथ चलाता है।
आवश्यकता प्रशासक को बदलें asInvoker और .exe फ़ाइल में परिवर्तन सहेजें।
ध्यान दें कि अब यूएसी शील्ड प्रोग्राम आइकन से गायब हो गया है, और आप इसे वर्तमान उपयोगकर्ता के रूप में व्यवस्थापक पासवर्ड मांगे बिना चला सकते हैं।
इस मामले में, आप प्रोग्राम को बाहरी मेनिफेस्ट फ़ाइल का उपयोग करने के लिए बाध्य कर सकते हैं। एक सादा पाठ फ़ाइल बनाएँ appname.exe.manifest (उदाहरण के लिए, Autologon.exe.manifest
) exe फ़ाइल के साथ निर्देशिका में और संसाधन हैकर से मैनिफ़ेस्ट कोड को उसमें कॉपी करें। आवश्यकता प्रशासक को बदलें asInvoker. मेनिफेस्ट फ़ाइल सहेजें।
EXE फ़ाइलों को प्रारंभ करते समय विंडोज़ को हमेशा बाहरी मेनिफेस्ट फ़ाइल का उपयोग करने का प्रयास करने के लिए, एक विशेष रजिस्ट्री पैरामीटर सक्षम करें:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f
विंडोज को पुनरारंभ करें और सुनिश्चित करें कि प्रोग्राम बाहरी मेनिफेस्ट फ़ाइल का उपयोग कर रहा है और व्यवस्थापकीय विशेषाधिकारों के बिना चल रहा है।
प्रोग्राम को सहेजे गए व्यवस्थापक पासवर्ड के साथ चलाने के लिए शॉर्टकट बनाएं
यदि किसी प्रोग्राम को चलाने के तरीके RunAsInvoker फ्लैग आपके लीगेसी एप्लिकेशन के लिए काम नहीं करता है, आप सहेजे गए व्यवस्थापक क्रेडेंशियल्स का उपयोग करके उपयोगकर्ता सत्र में ऐसे ऐप को चलाने का प्रयास कर सकते हैं। उपयोगकर्ता को स्थानीय व्यवस्थापक विशेषाधिकार प्रदान किए बिना प्रोग्राम चलाने का यह सबसे कम सुरक्षित तरीका है, इसलिए हमने जानबूझकर इसे अंतिम रखा है।
प्रोग्राम खोलने के लिए, अपने डेस्कटॉप पर एक नया शॉर्टकट बनाएं। कंप्यूटर का नाम, स्थानीय व्यवस्थापक का नाम और अपने ऐप के निष्पादन योग्य का पूरा पथ निर्दिष्ट करें।
उदाहरण के लिए:
runas /user:wks-123\root /savecred "C:\CorpApp\myapp.exe"
जब आप पहली बार प्रोग्राम चलाते हैं, तो यह कमांड प्रॉम्प्ट खोलेगा जिसमें आपको एडमिनिस्ट्रेटर पासवर्ड दर्ज करने के लिए कहा जाएगा।
RunAs कमांड, जब इसके साथ चलाया जाता है / सेवक्रेड विकल्प, उपयोगकर्ता नाम और पासवर्ड को Windows क्रेडेंशियल प्रबंधक में सहेजता है।
अगली बार शॉर्टकट रन होने पर, रनस टूल स्वचालित रूप से क्रेडेंशियल मैनेजर से सहेजा गया पासवर्ड प्राप्त करेगा और इसका उपयोग निर्दिष्ट स्थानीय व्यवस्थापक खाते के तहत ऐप को चलाने के लिए करेगा (शॉर्टकट शुरू करने पर आपको हर बार पासवर्ड के लिए संकेत नहीं दिया जाएगा) ..
निम्न आदेश क्रेडेंशियल प्रबंधक में सहेजे गए पासवर्ड को सूचीबद्ध करता है:
RunDll32.exe keymgr.dll,KRShowKeyMgr
विंडोज 11 पर ऐसा शॉर्टकट लॉन्च करते समय एक त्रुटि उत्पन्न होती है:
RUNAS ERROR: Unable to run - C:\CorpApp\myapp.exe 740: The requested operation requires elevation.
इसे ठीक करने के लिए, शॉर्टकट गुणों में कमांड बदलें। इसे इसके साथ बदलें:
C:\Windows\System32\runas /profile /user:WKS-123\root /savecred "cmd.exe /C C:\CorpApp\myapp.exe"
जैसा कि हमने ऊपर उल्लेख किया है, /savecred विकल्प का उपयोग करना सुरक्षित नहीं है। ऐसा इसलिए है क्योंकि जिस उपयोगकर्ता के पास व्यवस्थापक पासवर्ड उनके प्रोफ़ाइल में सहेजा गया है, वह इसे चलाने के लिए उपयोग कर सकता है कोई उन्नत अनुमतियों के साथ प्रोग्राम या कमांड, या यहां तक कि एडमिनिस्ट्रेटर अकाउंट पासवर्ड को रीसेट करने के लिए भी। क्रेडेंशियल मैनेजर में संग्रहीत पासवर्ड को Mimikatz जैसे टूल द्वारा सादे पाठ में भी डंप किया जा सकता है, इसलिए सहेजे गए पासवर्ड के उपयोग को अक्षम करना बेहतर है।
विंडोज़ पर, आप समूह नीति विकल्प का उपयोग करके क्रेडेंशियल प्रबंधक में पासवर्ड सहेजना अक्षम कर सकते हैं नेटवर्क एक्सेस: नेटवर्क प्रमाणीकरण के लिए पासवर्ड और क्रेडेंशियल्स के भंडारण की अनुमति न दें (कंप्यूटर कॉन्फ़िगरेशन -> विंडोज सेटिंग्स -> सुरक्षा सेटिंग्स -> स्थानीय नीतियां -> सुरक्षा विकल्प)।
कई तृतीय पक्ष उपकरण हैं जो आपको रनस में संग्रहीत व्यवस्थापक पासवर्ड का उपयोग करने की कमियों के आसपास काम करने की अनुमति देते हैं। उदाहरण के लिए, एडमीलिंक, RunAsRob, रनएएसपीसी. ये ऐप आपको एन्क्रिप्टेड एडमिनिस्ट्रेटर पासवर्ड फॉर्म को सेव करने और एडमिनिस्ट्रेटर विशेषाधिकारों के साथ प्रोग्राम को सुरक्षित रूप से चलाने की अनुमति देते हैं। ये उपकरण उपयोगकर्ता को एप्लिकेशन या कमांड चलाने की अनुमति नहीं देंगे क्योंकि वे निष्पादन योग्य फ़ाइल के पथ और चेकसम की जांच करते हैं जब यह शुरू होता है।
Leave a Comment