2013-03-13 7 views
8

मेरे पास एक कंसोल एप्लिकेशन है जिसे एक एआरपी सॉफ़्टवेयर द्वारा बुलाया जाने वाला विकसित किया गया था।मैं एक व्यवस्थापक के रूप में हमेशा एक कंसोल ऐप कैसे चला सकता हूं?

वे मेरे ऐप को एआरपी के अंदर कॉल करते हैं और जब वे ऐसा करते हैं, तो मुझे हमेशा ऐसा करने की अपर्याप्त अनुमति से संबंधित त्रुटियां मिलती हैं।

मैंने सभी उपयोगकर्ताओं के लिए exe के गुणों में "इस प्रोग्राम को व्यवस्थापक के रूप में चलाएं" चेकबॉक्स चेक किया है लेकिन परिणाम वही है।

मैंने एक मैनिफेस्ट जोड़ने के बारे में कुछ पढ़ा है जो यूएसी संवाद के लिए ऐप प्रॉम्प्ट करेगा, लेकिन यह नहीं है कि मैं चाहता हूं क्योंकि ऐप को सर्वर पर एआरपी से बुलाया जाएगा और क्लाइंट सर्वर पर संवाद नहीं देख पाएंगे।

क्या कोई मुझे बता सकता है कि इस कंसोल ऐप को हमेशा प्रशासक के रूप में कैसे चलाया जाए?

+0

क्यों इस कंसोल प्रोग्राम को प्रशासनिक विशेषाधिकार की आवश्यकता है? –

उत्तर

7

पहले , समझें कि इस प्रक्रिया में किसी बिंदु पर एक यूएसी संवाद होगा। उसे टालने का कोई तरीका नहीं है। कुछ दृष्टिकोण हैं जो आप ले सकते हैं:

  • क्या लोग ईआरपी सॉफ़्टवेयर को बढ़ाते हैं। मैं केवल पूर्णता के लिए इसमें शामिल हूं। जब भी आपको आमतौर पर शक्तियों की आवश्यकता नहीं होती है, तब भी जब आप ऐप चलाते हैं तो यूएसी प्रॉम्प्ट से सहमति देना बहुत भयानक होता है। यह एक आसान त्वरित परीक्षण होगा, हालांकि, आप यह पुष्टि करने के लिए कि यदि आपका ऐप ऊंचा हो गया है, तो चीजें काम करेगी। एक उन्नत प्रक्रिया से लॉन्च की गई सब कुछ बढ़ी है, इसलिए यदि आपका ऐप अभी भी त्रुटि संदेश प्राप्त करता है, तो यह कुछ ऐसा नहीं है जिसे आप ऊपर उठाकर ठीक करेंगे।
  • अपने ऐप को लॉन्च करने के लिए ईआरपी ऐप में कोड बदलें। आप सी # का जिक्र करते हैं। runas क्रिया के साथ लॉन्च करना यहां एक दृष्टिकोण है। यह ईआरपी डेवलपर पर बोझ डालता है और वे ऐसा करने में सक्षम नहीं हो सकते हैं।
  • अपने ऐप में एक मैनिफेस्ट जोड़ें। आप एक एम्बेड कर सकते हैं, या यदि आपके ऐप को foo.exe कहा जाता है तो उचित अनुरोध किए गए निष्पादन के साथ foo.exe.manifest फ़ाइल को हाथ से बनाएं। एक एम्बेड करने के लिए, सही प्रकार का मैनिफेस्ट चुनने के लिए अपने सी # प्रोजेक्ट के प्रॉपर्टी पेज का उपयोग करें। सुनिश्चित करें कि आप UseShellExecute के साथ लॉन्च किए गए हैं, या मैनिफेस्ट को अनदेखा कर दिया जाएगा।

यदि आप पहला विकल्प चुनते हैं, तो यूएसी प्रॉम्प्ट हर बार ईआरपी ऐप लॉन्च होगा। अच्छा नही। यदि आप दूसरा या तीसरा चुनते हैं, तो यूआरसी प्रॉम्प्ट हर बार आपका कंसोल ऐप ईआरपी ऐप से लॉन्च होगा। शायद स्वीकार्य।

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

+3

"एक और चीज जो आप सोच सकते हैं वह अधिक गंभीरता से देख रही है कि कंसोल ऐप को व्यवस्थापक निजी क्यों चाहिए।" ख़ूब कहा है। पूछने के लिए यह सही और सटीक सही सवाल है। –

+0

weel मैं, खिड़कियों की दुकान में X509 प्रमाणपत्रों को जोड़ रहा दुकान से प्रमाण पत्र को पढ़ने, एक डेटाबेस का उपयोग और एक बाहरी webservice.Is प्रशासन अधिकार है के लिए यह अनिवार्य करने के लिए कनेक्ट? – Marco

+0

मैं ईवेंट व्यूअर पर त्रुटियों को लॉग करने के लिए EventLog.WriteEntry() का भी उपयोग कर रहा हूं। तो मुझे लगता है कि मैं वास्तव में व्यवस्थापक अधिकारों को निश्चय करता हूं। सही? – Marco

0

एक बैच की तरह कुछ फ़ाइल बनानी:

runas /env /user:%USERDOMAIN%\%USERNAME% cmd.exe /K YourProgramName.exe 

कहाँ% UserDomain% और% USERNAME% अपने व्यवस्थापक खाते के विवरण के द्वारा बदल दिया गया है।

और इसके बजाए इसे चलाएं?

+0

है कि उपयोगकर्ता के रूप में अनुप्रयोग चलेगा, लेकिन एक व्यवस्थापक उपयोगकर्ता व्यवस्थापक अधिकार – War

22

अपनी परियोजना आवेदन मैनिफ़ेस्ट फ़ाइल में जोड़ें (जोड़ें -> नया आइटम -> जनरल -> आवेदन मैनिफ़ेस्ट फ़ाइल) app.manifest में और जोड़ने के लिए नीचे दिए गए नोड:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx

+0

बहुत बढ़िया ठीक है, भले ही की है कि सत्र तरक्की नहीं होगा, धन्यवाद – Linef4ult

+0

यह, इस सवाल का जवाब होना चाहिए और अधिक सीधे आगे और सरल। –

संबंधित मुद्दे

 संबंधित मुद्दे