Tak więc pisałem aplikację, która wymaga dostępu do rejestru. Nie dotknąłem żadnych ustawień kompilacji, chcąc sprawić, aby wszystko działało zanim dodałem inne elementy, takie jak opis lub imię.
Nieoczekiwanie 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 plik manifestu żądający tych uprawnień.
Mój problem polega na tym, że ten błąd nie zniknie i nie mogę skompilować mojego programu. Wszelkie porady dotyczące tego, co robić? (Uwaga boczna: Już idę spać, więc sprawdzę to jutro po południu)."ClickOnce nie obsługuje poziomu wykonania żądania" requireAdministrator. ""
Odpowiedz
Edytuj: Ten komentarz daje również dobrą odpowiedź.
Kliknij raz pojawi się, aby włączyć po kliknięciu "Publikuj", czy chcesz, czy nie! Jeśli używasz "requireAdministrator", okazuje się, że nie możesz użyć ClickOnce, a zatem nie możesz "Opublikuj" swojego projektu.
oryginalny:
Okazuje się, że na karcie Zabezpieczenia "Włącz ustawienia zabezpieczeń ClickOnce" został sprawdzony. Chociaż tego nie sprawdziłem. W każdym razie odznaczenie tego zatrzymanego ClickOnce daje mi błędy. To zajęło trochę czasu, aby znaleźć ...
Jeśli kiedykolwiek użyć kreatora publikowania lub „Publish teraz”, kliknij pole wyboru jednokrotnego zostanie automatycznie wybrany ...
Spójrz w swoim app.Manifest plik, a zobaczysz to:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
jest tam instrukcjami w komentarzach, ale po prostu usuwając „requireAdministrator” i wstawić to w to miejsce rozwiązał problem dla mnie:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
Mam ten sam problem. Rozwiązuję go, odznaczając "Włącz ustawienia zabezpieczeń ClickOnce" Aby znaleźć tę opcję w programie Visual Studio Kliknij prawym przyciskiem myszy na swoim projekcie ==> właściwości ==> Wybierz Zabezpieczenia ==> Włącz zabezpieczenia ClickOnce ustawienia (Ta opcja była już zaznaczona, więc usunąłem zaznaczenie i mój problem został rozwiązany).
Wiem, że to stare pytanie, ale ja przyszedłem tutaj dwa lata później tak:
Można wyłączyć ClickOnce z karty Zabezpieczenia na properites projektu, aby pomóc ten problem; patrz poniżej:
tylko
Imports System.security
i U dostanie żadnego błędu i aplikacja zostanie uruchomiona jako admin
Po prostu przypisanie odwołania do samego zestawu nie spowoduje wykonania żadnego kodu w większości przypadków. Bez dalszych wpisów nic nam to nie mówi. Ten wpis dotyczy wymagań związanych z edytowaniem rejestru administracyjnego, a konkretniej jego rozmieszczeniem za pomocą opcji Visual Studio Publish, która generuje zestaw ClickOnce. Wycofane z powodu braku jasności lub widocznej relewancji. –
wiem, że to jest stary, ale natknąłem się na niego patrzy dla odpowiedzi.W moim przypadku używam funkcji publikowania i muszę go nadal używać. Potrzebuję również dostępu do funkcji administratora. Z tego powodu żadna z powyższych odpowiedzi nie sprawdziła się u mnie.
Skończyłem na dodaniu metody na samym początku mojej aplikacji, która sprawdza, czy jest uruchamiana jako administrator, a jeśli nie jest, uruchom ponownie jako administrator. Aby to zrobić, musisz dodać następujące odniesienia.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
Następnie należy umieścić to gdzieś, do której główna metoda ma wygodny dostęp. Używam WPF, więc dodałem go do MainWindow.xaml.cs, ale możesz dodać go na początku w kodzie. Pamiętaj tylko, aby dodać "statyczne" 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()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
Na końcu, na początku programu, dodaj odniesienie do metody. W moim przypadku dodałem go do MainWindow, ale dodanie go do Main też działa.
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!
Tę czynność można uzyskać, wybierając opcję "Włącz ustawienia bezpieczeństwa ClickOnce" (ponieważ nie można jej "odznaczyć" podczas publikowania, zgodnie z opisem), a następnie wybierając "Jest to aplikacja o częściowym zaufaniu". "Lokalny intranet" zostanie automatycznie wybrany z rozwijanego menu, co jest całkowicie poprawne.
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żyć w ten sposób, niektóre bloki AV-Software kodzie.
Dlaczego? Wszystko jest w porządku z tym fragmentem i podpowiedzią, że AV może zablokować ten kod jest nawet poprawny. Wszędzie jakieś trolle. – Tzwenni
Jeśli ktoś byłby tak uprzejmy i może uczciwie wyrównać mój post do zera, byłoby miło. thx – Tzwenni
Pytanie dotyczy C#, więc zakładam, że dlatego wycofali się na – Lonefish
- 1. CMake RequireAdministrator
- 2. Serwer programistyczny Django nie obsługuje żądania ajaxowego
- 3. WCF DataService nie obsługuje potwierdzenia wstępnego Żądania OPTIONS?
- 4. ClickOnce nie zainstaluje .NET 4.5
- 5. Podpisany plik wykonywalny i RequireAdministrator uruchamiany z folderu tymczasowego?
- 6. Użycie tornado.httpclient.AsyncHTTPClient.fetch() do wykonania żądania GET wraz z parametrami
- 7. res.sendfile() nie obsługuje dobrze javascripts
- 8. Używanie klienta koszulki do wykonania operacji POST z paramertami żądania i jednostką żądania
- 9. NLog nie loguje się za pomocą ClickOnce
- 10. ClickOnce Deployment - Stowarzyszenie Plik nie Rejestrowanie
- 11. Certyfikat ClickOnce wygasł - nie podpisano manifestu
- 12. Jak przechowywać zmienne poziomu żądania w pliku node.js?
- 13. ClickOnce ikona dialogowe instalacji
- 14. Czy istnieje HttpClient, który samodzielnie obsługuje żądania buforowania?
- 15. WPF i ClickOnce
- 16. W jaki sposób moja aplikacja jednowątkowa Rails obsługuje żądania równoczesne?
- 17. Co oznacza podpisanie ClickOnce?
- 18. Clickonce i app.config
- 19. Wymagany poziom wykonania dla biblioteki dll
- 20. W jaki sposób Node.js obsługuje jednoczesne żądania z jednym wątkiem?
- 21. Dlaczego wsHttpBinding nie obsługuje przesyłania strumieniowego?
- 22. Jak opublikować aplikację ClickOnce za pośrednictwem CruiseControl.NET?
- 23. Vim nie obsługuje Unicode?
- 24. Usługa nie obsługuje chkconfig
- 25. xcode4 nie obsługuje Perforce?
- 26. (Obiekt nie obsługuje #inspect)
- 27. symfony2 - Uzyskaj czas wykonania
- 28. Obok siebie Instalacja ClickOnce
- 29. Przenoszenie wdrożenia ClickOnce
- 30. Wdrażanie Microsoft.Bcl.Async w/ClickOnce
Nienawidzę tu podawać oczywistości, ale * dodałeś manifest żądający uprawnień 'requireAdministrator' * i * ClickOnce zaczął narzekać, że nie obsługuje' requireAdministrator' *. Problem powinien być bardzo jasny. ClickOnce widzi potrzebę podniesienia poziomu w twoim manifeście (który staje się częścią twojej aplikacji). Nie jestem pewien, czego więcej tutaj potrzebujesz ... –
@KenWhite: Nie jest jednak całkiem oczywiste ani logiczne, że wymóg administratora w połączeniu z kliknięciem raz uniemożliwi kompilowanie_ projektu, a nie tylko jego działanie - ale to robi. –
@ 500-InternalServerError, logika powinna ci powiedzieć, że związek przyczynowo-skutkowy istnieje po prostu przez to, że dodanie "wymaga administratora" powoduje, że nie kompiluje się, ponieważ ma coś wspólnego z "wymaga administrowania nieobsługiwanego", IMO. :-) –