जब शुरू किया जाता है, तो कई कार्यक्रमों को अनुमति उन्नयन (ऐप आइकन पर ढाल) की आवश्यकता होती है, लेकिन वास्तव में उन्हें अपने सामान्य संचालन के लिए व्यवस्थापकीय विशेषाधिकारों की आवश्यकता नहीं होती है। उदाहरण के लिए, आप अपने उपयोगकर्ताओं को ProgramFiles . में ऐप फ़ोल्डर में मैन्युअल रूप से अनुमतियां दे सकते हैं और/या प्रोग्राम द्वारा उपयोग की जाने वाली रजिस्ट्री कुंजियाँ। तो गैर-व्यवस्थापक उपयोगकर्ता खाते के तहत इस तरह के एक कार्यक्रम को शुरू करते समय, एक यूएसी संकेत दिखाई देगा और उपयोगकर्ता को एक व्यवस्थापक पासवर्ड दर्ज करना होगा (यदि कंप्यूटर पर उपयोगकर्ता खाता नियंत्रण सक्षम है)। इस तंत्र को बायपास करने के लिए, कई उपयोगकर्ता UAC को सरल रूप से अक्षम कर देते हैं या किसी उपयोगकर्ता को स्थानीय समूह "व्यवस्थापक" में एक उपयोगकर्ता खाता जोड़कर व्यवस्थापक विशेषाधिकार प्रदान करते हैं। बेशक, दोनों तरीके सुरक्षित नहीं हैं।
कुछ Windows ऐप्स मानक उपयोगकर्ताओं के अंतर्गत क्यों नहीं चलते हैं और उन्हें व्यवस्थापकीय अनुमतियों की आवश्यकता होती है?
C:\Program Files (x86)\SomeApp में अपने स्वयं के फ़ोल्डर में कुछ फ़ाइलों (लॉग, कॉन्फिग, आदि) को संशोधित करने के लिए एक ऐप को व्यवस्थापकीय विशेषाधिकारों की आवश्यकता हो सकती है। डिफ़ॉल्ट रूप से, उपयोगकर्ताओं के पास इस निर्देशिका पर संपादन (लिखने और संशोधित करने) की अनुमति नहीं होती है। इस प्रोग्राम को सामान्य रूप से काम करने के लिए, व्यवस्थापक अनुमतियों की आवश्यकता होती है। इस समस्या को हल करने के लिए, आपको संशोधित . को मैन्युअल रूप से अनुदान देना होगा और/या लिखें NTFS फ़ाइल सिस्टम स्तर पर ऐप फ़ोल्डर पर किसी उपयोगकर्ता (या अंतर्निहित उपयोगकर्ता समूह) के लिए अनुमति।
<मजबूत>
नोट . वास्तव में, बदलते एप्लिकेशन डेटा को C:\Program Files के अंतर्गत अपने स्वयं के फ़ोल्डर में संग्रहीत करने की अनुशंसा नहीं की जाती है। ऐप डेटा को यूजर प्रोफाइल में स्टोर करना बेहतर है। लेकिन यह ऐप डेवलपर्स के आलस्य और अक्षमता का सवाल है।एक प्रोग्राम कैसे चलाएं जिसके लिए मानक उपयोगकर्ता के तहत व्यवस्थापकीय विशेषाधिकारों की आवश्यकता होती है?
इससे पहले हमने वर्णन किया था कि RunAsInvoker . का उपयोग करके किसी विशेष ऐप के लिए UAC प्रॉम्प्ट को कैसे अक्षम किया जाए पैरामीटर। हालांकि, यह तरीका पर्याप्त लचीला नहीं है।
आप /SAVECRED
का उपयोग करके सहेजे गए व्यवस्थापक पासवर्ड (Windows क्रेडेंशियल मैनेजर में) के साथ RunAs का भी उपयोग कर सकते हैं विकल्प। यह असुरक्षित भी है क्योंकि उपयोगकर्ता इस कंप्यूटर पर किसी भी प्रोग्राम को चलाने के लिए सहेजे गए व्यवस्थापक क्रेडेंशियल पासवर्ड का उपयोग कर सकता है।
आइए किसी भी प्रोग्राम को बिना व्यवस्थापक विशेषाधिकारों (व्यवस्थापक पासवर्ड दर्ज किए) और यूएसी सक्षम (यूएसी स्लाइडर के स्तर 4, 3 या 2) के साथ चलाने के लिए मजबूर करने के एक आसान तरीके पर विचार करें।
एक उदाहरण के रूप में रजिस्ट्री संपादक को लेते हैं — regedit.exe (यह C:\Windows\ फ़ोल्डर में स्थित है)। ऐप आइकन के आगे यूएसी शील्ड पर ध्यान दें। इस आइकन का अर्थ है कि यूएसी के माध्यम से विशेषाधिकारों के उन्नयन से इस कार्यक्रम को चलाने का अनुरोध किया जाएगा।
यदि आप regedit.exe
चलाते हैं , आप एक उपयोगकर्ता खाता नियंत्रण विंडो देखेंगे जो व्यवस्थापक क्रेडेंशियल्स के लिए पूछ रही है (Do you want to allow this app to make changes to your device?
) यदि आप पासवर्ड प्रदान नहीं करते हैं और उन्नयन की पुष्टि नहीं करते हैं, तो ऐप प्रारंभ नहीं होगा।
आइए इस कार्यक्रम के लिए यूएसी अनुरोध को बायपास करने का प्रयास करें। टेक्स्ट फ़ाइल बनाएं run-as-non-admin.bat आपके डेस्कटॉप पर निम्न कोड है:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
regedit.exe को व्यवस्थापकीय विशेषाधिकारों के बिना चलाने के लिए और UAC प्रांप्ट को दबाने के लिए, डेस्कटॉप पर इस BAT फ़ाइल को प्रारंभ करने के लिए आप जिस EXE फ़ाइल को प्रारंभ करना चाहते हैं उसे सरल खींचें।
फिर रजिस्ट्री संपादक को यूएसी प्रॉम्प्ट के बिना और व्यवस्थापक पासवर्ड दर्ज किए बिना शुरू करना चाहिए। यदि आप कार्य प्रबंधक खोलते हैं और उन्नत . जोड़ते हैं कॉलम, आप देखेंगे कि उन्नत स्थिति के बिना regedit.exe प्रक्रिया है (गैर-व्यवस्थापक उपयोगकर्ता अनुमतियों के साथ चलाएँ)।
HKEY_LOCAL_MACHINE रजिस्ट्री हाइव में किसी भी पैरामीटर को संपादित करने का प्रयास करें। जैसा कि आप देख सकते हैं, उपयोगकर्ता इस रजिस्ट्री कुंजी में आइटम को संपादित नहीं कर सकता है (उपयोगकर्ता के पास सिस्टम रजिस्ट्री कुंजियों के लिए लिखने की अनुमति नहीं है)। लेकिन आप अपने उपयोगकर्ता हाइव — HKEY_CURRENT_USER में रजिस्ट्री कुंजियों और मापदंडों को जोड़ या संपादित कर सकते हैं।
इसी तरह आप BAT फाइल का इस्तेमाल करके कोई भी ऐप चला सकते हैं। बस निष्पादन योग्य फ़ाइल का पथ निर्दिष्ट करें।
run-app-as-non-admin.bat Set 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 विशेषाधिकार उन्नयन के बिना उपयोगकर्ता के रूप में चलाएं का चयन करें। फ़ाइल एक्सप्लोरर के संदर्भ मेनू में।
आप इस विकल्प को GPO का उपयोग करके रजिस्ट्री पैरामीटर आयात करके डोमेन के सभी कंप्यूटरों पर परिनियोजित कर सकते हैं।मैं आपको एक बार फिर याद दिला दूं कि RUNASINVOKER मोड में प्रोग्राम का उपयोग करने से आप प्रोग्राम को ऊपर नहीं उठा पाएंगे। RunAsInvoker यूएसी प्रॉम्प्ट को दबा देता है और प्रोग्राम को बताता है कि इसे वर्तमान उपयोगकर्ता की अनुमति के साथ चलना चाहिए, न कि विशेषाधिकारों के उन्नयन के लिए। यदि किसी प्रोग्राम को सिस्टम सेटिंग्स या फ़ाइलों को संपादित करने के लिए वास्तव में उन्नत विशेषाधिकारों की आवश्यकता है, तो यह काम नहीं करेगा या फिर से व्यवस्थापक अनुमतियों के लिए पूछेगा।
__COMPAT_LAYER में RunAsInvoker के साथ UAC को बायपास कैसे करें?
पर्यावरण चर __COMPAT_LAYER आपको अनुप्रयोगों के लिए विभिन्न संगतता स्तर सेट करने की अनुमति देता है (संगतता EXE फ़ाइल के गुणों में टैब)। इस चर का उपयोग करके, आप प्रोग्राम शुरू करते समय उपयोग की जाने वाली संगतता सेटिंग्स निर्दिष्ट कर सकते हैं। उदाहरण के लिए, Windows 8 संगतता मोड और 640×480 रिज़ॉल्यूशन में कोई ऐप प्रारंभ करने के लिए, निम्न सेट करें:
set __COMPAT_LAYER=Win8RTM 640x480
__COMPAT_LAYER चर में कुछ विकल्प हैं जिनमें हम रुचि रखते हैं। निम्नलिखित पैरामीटर हैं:
- RunAsInvoker - यूएसी प्रॉम्प्ट के बिना मूल प्रक्रिया के विशेषाधिकारों के साथ एक ऐप चलाएं;
- RunAsHighest - उपयोगकर्ता के लिए उपलब्ध उच्चतम-स्तरीय अनुमति के साथ एक प्रोग्राम चलाएं (यदि उपयोगकर्ता के पास व्यवस्थापकीय विशेषाधिकार हैं तो यूएसी प्रॉम्प्ट दिखाई देगा);
- RunAsAdmin - व्यवस्थापक के रूप में एक ऐप चलाएं (यूएसी प्रॉम्प्ट हर बार दिखाई देता है)।
निम्नलिखित सीएमडी कोड वर्तमान प्रक्रिया के लिए RunAsInvoker मोड को सक्षम करता है और निर्दिष्ट प्रोग्राम को बिना उन्नयन के चलाता है:
set __COMPAT_LAYER=RUNASINVOKER
start "" "C:\Program Files\MyApp\testapp.exe"
EXE फ़ाइल मेनिफेस्ट में RunAsInvoker मोड सक्षम करें
जैसा कि हमने ऊपर कहा, विंडोज 10 उन कार्यक्रमों के लिए यूएसी शील्ड आइकन प्रदर्शित करता है जिन्हें चलाने के लिए ऊंचाई की आवश्यकता होती है। प्रोग्राम मेनिफेस्ट . में एप्लिकेशन को संकलित करते समय डेवलपर्स इस आवश्यकता को सेट करते हैं ।
आप किसी भी exe फ़ाइल के मेनिफेस्ट को संपादित कर सकते हैं और प्रोग्राम को एलिवेटेड मोड में चलाने की आवश्यकता को अक्षम कर सकते हैं।
प्रोग्राम मेनिफेस्ट को संपादित करने के लिए, आप मुफ़्त संसाधन हैकर . का उपयोग कर सकते हैं उपकरण। संसाधन हैकर में ऐप की निष्पादन योग्य फ़ाइल खोलें।
इस उदाहरण में, मैंAutologon.exe
. के मेनिफेस्ट को संपादित करूँगा Sysinternals द्वारा उपकरण, जिसका उपयोग बिना पासवर्ड के विंडोज़ में स्वचालित रूप से लॉग इन करने के लिए किया जा सकता है। बाईं ओर ट्री में, मेनिफेस्ट सेक्शन में जाएँ और प्रोग्राम मेनिफेस्ट खोलें। निम्नलिखित xml अनुभाग पर ध्यान दें:
<requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges>
यह आवश्यकता व्यवस्थापक . का धन्यवाद है विकल्प है कि Windows हमेशा इस प्रोग्राम को एक व्यवस्थापक के रूप में चलाने का प्रयास करता है।
आवश्यकता व्यवस्थापक को Invoker के रूप में . में बदलें और exe फ़ाइल में परिवर्तन सहेजें।
ध्यान दें कि अब यूएसी शील्ड प्रोग्राम आइकन से गायब हो गई है, और आप इसे वर्तमान उपयोगकर्ता अनुमतियों के साथ व्यवस्थापक पासवर्ड मांगे बिना चला सकते हैं।
यदि निष्पादन योग्य ऐप फ़ाइल MS Authenticode (कोड साइनिंग सर्टिफिकेट) के साथ हस्ताक्षरित है, तो exe फ़ाइल को संशोधित करने के बाद, यह काम करना बंद कर सकती है या चेतावनी जारी कर सकती है।
इस मामले में, आप प्रोग्राम को बाहरी मेनिफेस्ट फ़ाइल का उपयोग करने के लिए बाध्य कर सकते हैं। एक सादा पाठ फ़ाइल बनाएं appname.exe.manifest (उदाहरण के लिए, Autologon.exe.manifest
) exe फ़ाइल के साथ निर्देशिका में और उसमें संसाधन हैकर से मेनिफेस्ट कोड कॉपी करें। आवश्यकता व्यवस्थापक को Invoker के रूप में . में बदलें . मेनिफेस्ट फ़ाइल सहेजें।
exe फ़ाइलें लॉन्च करते समय Windows को हमेशा बाहरी मेनिफ़ेस्ट फ़ाइल का उपयोग करने का प्रयास करने के लिए, एक विशेष रजिस्ट्री पैरामीटर सक्षम करें:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f
विंडोज़ को पुनरारंभ करें और सुनिश्चित करें कि प्रोग्राम बाहरी मेनिफेस्ट फ़ाइल का उपयोग कर रहा है जो बिना व्यवस्थापक विशेषाधिकारों के चलने के लिए कहता है।