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ć.
i bez pytania UAC? – Atoxis
@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
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