तो मैं एक ऐसा एप्लिकेशन लिख रहा था जिसके लिए रजिस्ट्री तक पहुंच की आवश्यकता है। मैंने किसी भी बिल्ड सेटिंग्स को छुआ नहीं था, इससे पहले कि मैं विवरण या नाम जैसे अन्य स्पर्श जोड़ूं, काम करने के लिए काम करना चाहता हूं।
नीले रंग से, मुझे एक त्रुटि मिलती है जो दूर नहीं जाएगी। ClickOnce does not support the request execution level 'requireAdministrator'.
अब, मैंने इस एप्लिकेशन में क्लिकऑन को छुआ नहीं था। मैंने जो कुछ किया था, उनमें एक अनुमति फ़ाइल शामिल थी जिसमें इन अनुमतियों का अनुरोध किया गया था।
मेरी समस्या अब यह है कि यह त्रुटि दूर नहीं जाएगी, और मैं अपने प्रोग्राम को संकलित नहीं कर सकता। क्या करना है इस पर कोई सलाह? (साइड नोट: मैं बिस्तर पर जाने वाला हूं, इसलिए मैं इसे कल दोपहर जांचूंगा)।"क्लिकऑन अनुरोध निष्पादन स्तर का समर्थन नहीं करता है 'आवश्यकता प्रशासक।'"
उत्तर
संपादित करें: यह टिप्पणी भी एक अच्छा जवाब देती है।
जब भी आप "प्रकाशित करें" पर क्लिक करते हैं, तो सक्षम होने पर क्लिक करें, चाहे आप इसे चाहते हैं या नहीं! यदि आप "आवश्यकता प्रशासक" का उपयोग कर रहे हैं तो ऐसा लगता है कि आप ClickOnce का उपयोग नहीं कर सकते हैं, और इसलिए आपकी प्रोजेक्ट "प्रकाशित" नहीं कर सकते हैं।
मूल:
बाहर कर देता है कि सुरक्षा टैब के अंतर्गत, "ClickOnce सुरक्षा सेटिंग्स सक्षम करें" जांच की गई। भले ही मैंने इसे जांच नहीं लिया। वैसे भी, अनचेकिंग ने क्लिकऑन को मुझे त्रुटियां देने से रोक दिया। यही कारण है कि कुछ समय लिया लगता है ...
क्या तुमने कभी प्रकाशन विज़ार्ड का उपयोग, या 'अभी प्रकाशित', क्लिक करें-एक बार चेकबॉक्स स्वचालित रूप से चयनित हो जाता है ...
अपने app.Manifest में एक नजर डालें फ़ाइल और आप इस देखेंगे:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
वहाँ टिप्पणी में वहाँ निर्देश है, लेकिन सिर्फ "requireAdministrator" को हटाने और इस में सम्मिलित जगह मेरे लिए समस्या हल है:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
मुझे एक ही समस्या है I "क्लिकऑन सुरक्षा सेटिंग्स सक्षम करें" विजुअल स्टूडियो राइट में इस विकल्प को ढूंढने के लिए अपने पर क्लिक करें परियोजना ==> गुण ==> सुरक्षा का चयन करें ==> क्लिकऑन सुरक्षा सक्षम करें सेटिंग्स (यह विकल्प पहले से ही चेक किया गया था इसलिए मैंने इसे अनचेक किया और मेरी समस्या हल हो गई)।
मैं इस एक पुराने सवाल है, लेकिन मैं यहाँ दो साल बाद तो आया था:
आप इस मुद्दे को मदद करने के लिए परियोजना प्रॉपर्टीज़ पर सुरक्षा टैब से ClickOnce अक्षम कर सकते हैं नीचे देखें:
सिर्फ
Imports System.security
और यू कोई त्रुटि प्राप्त होगी और आपके आवेदन व्यवस्थापक के रूप में चलाया जाएगा
बस एक असेंबली के लिए संदर्भ निर्दिष्ट करने से प्रत्येक मामले में किसी भी कोड को निष्पादित नहीं किया जाएगा। अधिक पोस्ट किए बिना, यह हमें कुछ भी नहीं बताता है। यह पोस्ट प्रशासनिक रजिस्ट्री संपादन की आवश्यकता के संबंध में है और अधिक विशेष रूप से विजुअल स्टूडियो प्रकाशन विकल्प के माध्यम से तैनाती है जो क्लिकऑन असेंबली उत्पन्न करता है। स्पष्टता की कमी, या स्पष्ट रिलीज की कमी के लिए डाउनवॉटेड। –
मैं जानता हूँ कि यह पुराना है लेकिन मैं इसे भर में ठोकर खाई देख जवाब के लिए।मेरे मामले में, मैं प्रकाशित फ़ंक्शन का उपयोग कर रहा हूं और मुझे इसका उपयोग जारी रखने की आवश्यकता है। मुझे व्यवस्थापक क्षमताओं तक पहुंच की भी आवश्यकता है। तो इसी कारण से, उपर्युक्त उत्तरों में से कोई भी मेरे लिए काम नहीं करता है।
मैंने अपने आवेदन की शुरुआत में एक विधि जोड़ना समाप्त कर दिया जो जांचता है कि यह व्यवस्थापक के रूप में चलाया जा रहा है और यदि यह नहीं है, तो खुद को व्यवस्थापक के रूप में पुनः लॉन्च करें। ऐसा करने के लिए, आपको निम्नलिखित संदर्भों को जोड़ा जाना चाहिए।
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
तो आपको इसे कहीं और रखना होगा कि आपकी मुख्य विधि के पास आसान पहुंच है। मैं WPF का उपयोग कर रहा हूं इसलिए मैंने इसे MainWindow.xaml.cs में जोड़ा लेकिन आप इसे अपने कोड में कहीं भी जोड़ सकते हैं। बस इन तरीकों के लिए "स्थैतिक" जोड़ना याद रखना चाहिए, आपको इसकी आवश्यकता होनी चाहिए।
private void AdminRelauncher()
{
if (!IsRunAsAdmin())
{
ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
proc.FileName = Assembly.GetEntryAssembly().CodeBase;
proc.Verb = "runas";
try
{
Process.Start(proc);
Application.Current.Shutdown();
}
catch(Exception ex)
{
Console.WriteLine("This program must be run as an administrator! \n\n" + ex.ToString());
}
}
}
private bool IsRunAsAdmin()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
अंत में, आपके प्रोग्राम की शुरुआत में, विधि का संदर्भ जोड़ें। मेरे मामले में, मैंने इसे मेनविंडो में जोड़ा लेकिन इसे मुख्य कार्यों में भी जोड़ दिया।
public MainWindow()
{
InitializeComponent();
AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on.
}
आशा है कि इससे मदद मिलती है!
यह क्रिया "क्लिकऑन सुरक्षा सेटिंग्स सक्षम करें" का चयन करके हासिल की जा सकती है (क्योंकि इसे प्रकाशित के दौरान "अनचेक" नहीं किया जा सकता है) और फिर "यह आंशिक ट्रस्ट एप्लिकेशन" चुनकर। "स्थानीय इंट्रानेट" स्वचालित रूप से ड्रॉप-डाउन मेनू में चुना जाएगा जो बिल्कुल ठीक है।
अपने परिवर्तनों को सहेजें, एप्लिकेशन प्रकाशित करें, किए गए-स्कीस। :-)
यहाँ VB.NET
के लिएIf Not New WindowsPrincipal(WindowsIdentity.GetCurrent).IsInRole(WindowsBuiltInRole.Administrator) Then
Process.Start(New ProcessStartInfo With { _
.UseShellExecute = True, _
.WorkingDirectory = Environment.CurrentDirectory, _
.FileName = Assembly.GetEntryAssembly.CodeBase, _
.Verb = "runas"})
संपादित करें कोड स्निपेट है: लेकिन आप इस तरह से तैनात हैं, तो आपके कोड कुछ ए वी- सॉफ्टवेयर ब्लॉक।
मुझे यहां स्पष्ट रूप से बताने से नफरत है, लेकिन * आपने 'आवश्यकता प्रशासक' अनुमतियों का अनुरोध करने के लिए एक मैनिफेस्ट जोड़ा है * और * क्लिकऑनेंस ने शिकायत शुरू कर दी है कि यह 'आवश्यकता प्रशासक' * का समर्थन नहीं करता है। समस्या बेहद स्पष्ट होनी चाहिए। ClickOnce आपके मैनिफेस्ट में एलिवेशन की आवश्यकता को देख रहा है (जो आपके एप्लिकेशन का हिस्सा बन जाता है)। मुझे यकीन नहीं है कि आपको यहां और क्या चाहिए ... –
@ केनहाइट: हालांकि, शायद यह पूरी तरह से स्पष्ट नहीं है और न ही तार्किक है कि एक बार क्लिक के साथ संयोजन में व्यवस्थापक आवश्यकता आपको परियोजना को _compiling_ से रोकती है, न कि इसे चलाने के लिए - लेकिन ऐसा होता है। –
@ 500-आंतरिक सर्वर सर्वर, तर्क आपको यह बताने चाहिए कि एक कारण संबंध केवल इस तथ्य से मौजूद है कि "व्यवस्थापक की आवश्यकता" जोड़ने से इसे "व्यवस्थापक समर्थित नहीं होना चाहिए", आईएमओ के साथ कुछ करने के कारण संकलन नहीं करना पड़ता है। :-) –