2012-04-19 16 views
5

Muszę nadać moje uprawnienia administratora aplikacji, wiedząc, że będą one uruchamiane z sesji użytkownika, a nie konta administratora.Wymuszono na aplikacji, aby mieć uprawnienia administratora.

Sprawdziłem na innych stronach, ale nie mogę znaleźć niczego, co mogłoby pomóc.

Próbowałem edycji manifest między innymi i tam włożona linię:

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

To dało mi błąd podczas próby publikowania za pomocą ClickOnce, ale nie kiedy debugowania.

Czy możesz mi pomóc?

Odpowiedz

1

Jestem prawie pewien, że to zachowanie jest zgodne z projektem.

Aplikacje ClickOnce zostały zaprojektowane do instalowania bez uprawnień administratora. Nie można ich podnieść w środowisku wykonawczym, ponieważ oznacza to, że efektywny użytkownik bez uprawnień administratora mógłby zainstalować, a następnie uruchomić aplikację jako administrator; stanowiłoby to zagrożenie dla bezpieczeństwa.

5

przede wszystkim - w istocie, nie jest dozwolone przez projektowania, instalowania i ClickOnce aplikacji jako admin: http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

spojrzeć na tym stanowisku: http://antscode.blogspot.ca/2011/02/running-clickonce-application-as.html - wyjaśnia jak uruchomić ClickOnce aplikacji jako admin. ALE - trzeba powiedzieć, że przeszedłem tę drogę - i nie miałem z tym szczęścia. Miałem wiele problemów z tym podejściem (próbowałem uruchomić aplikację ClickOnce z uprawnieniami administratora). O ile pamiętam, największym problemem było to, że automatyczna aktualizacja nie działa poprawnie. Nie wspominając o tym, że użytkownicy niebędący administratorami mogą przez cały czas podawać dane uwierzytelniające administratora.

Więc moja rada byłoby przemyśleć swoją logikę i hermetyzacji kawałek trzeba być zrobione jako admin w oddzielnym pliku EXE - i to bardzo jasne dla użytkownika, że ​​gdy kliknie ten przycisk, szybka UAC pojawi się (prawdopodobnie po dodaniu ikony "tarczy" do przycisku). I w tym zdarzeniu click_click zrobić coś takiego:

// 2. Run Photoshop action on this image (and wait for the task to complete) 
if (string.IsNullOrWhiteSpace(this.PhotoshopEnhanceActionAbsPath) == false) 
{ 
    var pi = new ProcessStartInfo(this.PhotoshopEnhanceActionAbsPath, "\"" + imgPhotoshopActionAbsPath + "\""); 
    pi.UseShellExecute = true; 
    pi.Verb = "runas"; 
    var photoshopAction = Process.Start(pi); 
    var success = photoshopAction.WaitForExit(); 
    if (success == false) 
    { 
     // do something here 
    }     
} 

to podejście bardzo dobrze mi poszło. Klucz jest następujący:

pi.UseShellExecute = true; 
pi.Verb = "runas"; 

uruchamia twój plik EXE z uprawnieniami administratora - więc monit UAC zostanie wyświetlony w tym momencie. Inną przyjemną konsekwencją jest to, że użytkownicy mogą nie uruchamiać tego konkretnego logiki za każdym razem, gdy używają aplikacji - i dlatego nie będą denerwować się podpowiedziami, gdy nie będą jej potrzebować.

+0

i bez pytania UAC? – Atoxis

+0

@Matth Przepraszamy, nie jestem jasny na twoje pytanie. Celem jest uruchomienie kodu SOME w trybie podwyższonym. Jeśli nie jesteś administratorem, potrzebujesz tego podpowiedzi do podniesienia swojej aplikacji. – avs099

+0

Inżynierowie, którzy będą korzystać z tej aplikacji, to konto użytkownika na komputerze. aplikacja wykonuje proces prvilèges, który wymaga administratora. Poza tym jest niemożliwe ze względów bezpieczeństwa, że ​​ich konto administratora jest świadczone. Chcę tylko być przejrzystym w stosunku do użytkownika. i na tej samej zasadzie już udało mi się wywołać proces bez UAC, dzięki komendom: p.StartInfo.UserName = "użytkownik" p.StartInfo.Password = "secret" , ale jedynym problemem jest to, że wyświetlany jest mój wiersz polecenia . Chociaż podoba mi się to, że działa w tle. – Atoxis

Powiązane problemy