"ClickOnce nie obsługuje poziomu wykonania żądania" requireAdministrator.'"

Więc pisałem aplikację, która wymaga dostępu do rejestru. Nie dotknąłem żadnych ustawień kompilacji, chcąc sprawić, aby coś działało, zanim dodałem inne akcenty, takie jak opis lub nazwa.

Nagle pojawia się błąd, który nie zniknie. ClickOnce does not support the request execution level 'requireAdministrator'. teraz, nie dotknąłem ClickOnce w tej aplikacji. Wszystko, co zrobiłem, to załączyć plik manifestu z prośbą o te uprawnienia.

Moim problemem jest to, że ten błąd nie zniknie, a ja nie mogę skompilować mojego programu. Jakieś rady co robić? (Uwaga: idę spać, więc sprawdzę to jutro po południu).

Author: Scott Wylie, 2012-06-13

11 answers

Edit: Ten komentarz też daje dobrą odpowiedź.

Kliknij raz pojawia się, aby włączyć za każdym razem, gdy klikniesz "Publikuj", czy chcesz, czy nie! Jeśli używasz "requireAdministrator", to wydaje się, że nie możesz użyć ClickOnce, a zatem nie możesz "opublikować" swojego projektu.


Oryginalny:

Okazuje się, że w zakładce bezpieczeństwo zaznaczono "Włącz ustawienia zabezpieczeń ClickOnce". Nawet jeśli tego nie sprawdziłam. Anyway, odznaczenie, które zatrzymało ClickOnce dając mi błędy. Znalezienie tego zajęło trochę czasu...

 152
Author: LMS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-26 14:43:59

Wiem, że to stare pytanie, ale przyjechałam tu dwa lata później więc:

Możesz wyłączyć ClicKOnce z zakładki bezpieczeństwo na properites projektu, aby pomóc w problemie; zobacz poniżej:

Tutaj wpisz opis obrazka

 44
Author: t_plusplus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-17 17:23:49

Jeśli kiedykolwiek użyjesz Kreatora publikowania lub opcji "Publikuj teraz", pole wyboru Kliknij raz zostanie automatycznie zaznaczone...

 19
Author: Victor Rosu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-03 05:53:36

Wiem, że to stare, ale natknąłem się na nie szukając odpowiedzi. W moim przypadku używam funkcji publikowania i muszę jej używać. Potrzebuję też dostępu do możliwości administratora. Z tego więc powodu żadna z powyższych odpowiedzi nie zadziałała na mnie.

Na samym początku mojej aplikacji dodałem metodę, która sprawdza, czy jest uruchamiana jako administrator, a jeśli nie, uruchom ją ponownie jako administrator. Aby to zrobić, musisz dodać następujące referencje.

using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;

Wtedy ty trzeba będzie umieścić to gdzieś, że główna metoda ma poręczny dostęp do. Używam WPF więc dodałem go do MainWindow.xaml.cs, ale można go dodać w dowolnym miejscu wcześniej w kodzie. Pamiętaj tylko, aby dodać "static" do tych metod, jeśli tego potrzebujesz.

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()
{
    try
    {
        WindowsIdentity id = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(id);
        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    catch (Exception)
    {
        return false;
    }
}

Na koniec, na początku programu, dodaj odniesienie do metody. W moim przypadku dodałem go do MainWindow, ale dodałem go również do głównych prac.

public MainWindow()
{
    InitializeComponent();
    AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on.
}
Mam nadzieję, że to pomoże!
 17
Author: Tyler C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-12 08:41:43

Tę czynność można wykonać wybierając " Włącz ustawienia zabezpieczeń ClickOnce "(ponieważ nie można jej" odznaczyć "podczas publikowania, jak podano), a następnie wybierając"to jest aplikacja częściowego zaufania". "Lokalny Intranet" zostanie automatycznie wybrany z rozwijanego menu, co jest całkowicie poprawne.

Zapisz zmiany, Opublikuj aplikację, gotowe-narty. :-)Urywek Ustawień Zabezpieczeń

 5
Author: CodeBreaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 20:01:43

Spójrz w aplikacji.Plik Manifest i zobaczysz to:

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

Tam jest instrukcja w komentarzach, ale po prostu usunięcie "requireAdministrator" i wstawienie tego w to miejsce rozwiązało problem dla mnie:

 <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
 2
Author: Brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-16 12:24:36

Mam ten sam problem s rozwiążę go odznaczając "Enable ClickOnce security settings " Aby znaleźć tę opcję w Visual Studio kliknij prawym przyciskiem myszy projekt ==>Właściwości= = > wybierz bezpieczeństwo= = > Włącz ustawienia bezpieczeństwa ClickOnce (Ta opcja była już zaznaczona, więc odznaczyłem ją i mój problem został rozwiązany).

 2
Author: Ragnar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-28 17:34:41

Oto fragment kodu dla 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"})

EDIT: ale jeśli wdrożysz w ten sposób, niektóre programy AV blokują Twój kod.

 2
Author: Tzwenni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-03 16:04:09

Dla tych, którzy używają odznacz "Włącz ustawienia zabezpieczeń ClickOnce" nie może działać, aby wypróbować metodę, którą znajduję.

Najpierw opuść aplikację.manifest requestedExecutionLevel item as is:

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

A potem edytujesz swój Program.plik cs jak ten:

using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
using System.Windows.Forms;

Zrestrukturyzuj główną metodę jak:

    static void Main()
        {
            var wi = WindowsIdentity.GetCurrent();
            var wp = new WindowsPrincipal(wi);

            bool runAsAdmin = wp.IsInRole(WindowsBuiltInRole.Administrator);

            if (!runAsAdmin)
            {
                // It is not possible to launch a ClickOnce app as administrator directly,
                // so instead we launch the app as administrator in a new process.
                var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);

                // The following properties run the new process as administrator
                processInfo.UseShellExecute = true;
                processInfo.Verb = "runas";

                // Start the new process
                try
                {
                    Process.Start(processInfo);
                }
                catch (Exception)
                {
                    // The user did not allow the application to run as administrator
                    MessageBox.Show("Sorry, but I don't seem to be able to start " + 
                       "this program with administrator rights!");
                }

                // Shut down the current process
                Application.Exit();
            }
            else
            {
                // We are running as administrator
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }

Działa na Windows 10 i Visual Studio 2019!

 2
Author: malajisi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-04 02:24:22

Dla każdego, kto na to wpadł, pomyślałem, że przyczynię się do tego, co skończyło się na pracy dla mnie.

Tak, opcja "Włącz ustawienia zabezpieczeń ClickOnce" zostanie automatycznie ponownie sprawdzona, jeśli ją odznaczysz, gdy wykonasz Build > Publish .

Dla mnie nie muszę "publikować" - to prosty, przenośnyexe, który tworzy zaplanowane zadania dla moich użytkowników i musiałem się upewnić, że jest podniesiony, nawet po zalogowaniu jako Administrator.

Więc właśnie wziąłem swój najnowszy .exe z \bin\Release i to jest to, co jest wdrażane w systemach moich klientów.

Działał zgodnie z oczekiwaniami - tzn. gdy umieściłem go na systemie z włączonym / UAC / na jego najwyższym ustawieniu,exe ma na sobie "tarczę", a kiedy ją uruchamiam, nawet po zalogowaniu się jako Administrator, podnosi się i dostaję monit UAC.

Moja mała aplikacja do harmonogramu zadań jest teraz w stanie utworzyć zadanie bez błędu "Odmowa dostępu" (który wcześniej można było obejść tylko klikając prawym przyciskiem myszy .exe i klikając Uruchom jako Administrator).

 1
Author: Samskara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-09 21:58:22

Just

Imports System.security

Oraz U nie otrzyma żadnego błędu, a aplikacja zostanie uruchomiona jako admin

 -12
Author: Aditya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-21 11:13:28