2012-12-10 15 views
5

Przeszukałem internet pod kątem funkcjonalności UAC na przycisku OK formularza, ale nie mogłem uzyskać informacji. Wszystkie informacje związane z implementacją UAC są ponowne uruchamianie aplikacji z uprawnieniami administratora.Kontrola konta użytkownika na przycisku OK

Moim wymaganiem jest utworzenie aplikacji, w której po kliknięciu przez użytkownika przycisku OK z ikoną Tarcza, użytkownik będzie mógł zapisać niektóre informacje w rejestrze systemu Windows poprzez podniesienie uprawnień użytkownika, ale nie chcę go ponownie uruchamiać aplikacja z uprawnieniami administratora.

+2

"Nie chcę ponownie uruchamiać aplikacji z uprawnieniami administratora." Twardy. Token procesu jest przypisywany jeden raz po uruchomieniu procesu. Potrzebujesz więc minimum dwóch procesów. –

+0

@DavidHeffernan Potrzebujesz dwóch procesów, ale zamiast ponownego uruchamiania tego samego procesu, możesz rozpocząć zupełnie inny proces. – Servy

+0

@Servy Tak, możesz to zrobić. Przeczytałem cytat z pytania, które brzmi: "Nie chcę uruchamiać kolejnego procesu". –

Odpowiedz

7

Ponowne uruchomienie aplikacji (lub uruchomienie aplikacji pomocniczej) jest tym co robisz. Jest to żądanie podniesionych uprawnień podczas uruchamiania aplikacji, która powoduje pojawienie się ekranu potwierdzenia UAC. Celem pokazywania ikony tarczy jest poinformowanie użytkownika o tym, że ekran potwierdzający zbliża się w zasadzie.

Nie trzeba ponownie uruchamiać aplikacji. Jeśli aplikacja dopuszcza wiele instancji, można uruchomić drugą kopię z parametrami wiersza polecenia wskazującymi zmianę rejestru. Lub możesz mieć aplikację pomocniczą, która wykonuje zadania administracyjne i uruchamiać ją w razie potrzeby. Aplikacja pomocnicza nie musi tworzyć ani pokazywać okna; może to być operacja całkowicie w tle.

-1

Może powinieneś dodać aplikację oczywiste i wymagają uprawnień administratora:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <security> 
      <requestedPrivileges> 
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

Edytuj

To może nie być najlepszym rozwiązaniem tutaj, ponieważ cała aplikacja jest uruchomiona pod podwyższonymi uprawnieniami i może to być luka w zabezpieczeniach.

+2

Problem polega na tym, że uruchamiasz całą aplikację z podwyższonymi uprawnieniami, gdy jest ona wymagana warunkowo i rzadko. To jest luka w zabezpieczeniach, która czeka, żeby się wydarzyć. – Servy

+0

W swoim pytaniu nie jest jasne, czy chce uruchomić całą aplikację z podwyższonymi uprawnieniami, czy nie! Niesamowite, że każda aplikacja powinna korzystać z najmniejszych przywilejów, ale nie zawsze jest to możliwe! –

+1

Oczywiście, że jest to możliwe, wystarczy spojrzeć na inną odpowiedź. Rozwiązaniem jest uruchomienie drugiego, działającego w tle procesu, który wykonuje kilka operacji wymagających podwyższonych uprawnień. – Servy

Powiązane problemy