Mam to, co przewodniki programistyczne UAC nazywają "aplikacją wyboru administracyjnego". Jeśli wiesz, co to jest przejście do następnej sekcji.Jak mogę skopiować plik jako "Standardowy użytkownik" w systemie Vista (np. "Aplikacja wyboru administracyjnego"), pytając użytkownika o dane uwierzytelniające administratora?
Tło:
ja chcem „standard” użytkownik ma możliwość wyboru/odznaczyć opcję Uruchom na startowego w preferencjach dla mojej aplikacji.
Ponieważ moje zgłoszenie dotyczy jednej maszyny (nie dotyczy użytkownika), musi nastąpić usunięcie lub skopiowanie pliku skrótu do folderu Menu Start/Programy/Autostart, który będzie wymagał dostępu administracyjnego w celu wykonania tej operacji .
Chciałbym więc, aby pojawił się "monit o poświadczenie konta użytkownika" i w ten sposób, jeśli użytkownik ma konto administratora, może również wprowadzić dane uwierzytelniające. Jest to najwyraźniej sposób, w jaki aplikacje mają być zaprojektowane tak, aby użytkownik nie musiał przełączać się na inne konto za każdym razem, gdy trzeba zrobić coś administracyjnego.
Fragment dokumentacji MSDN:
administracyjnej, wybór zastosowania
podwyższonej procesami obiektu COM
Początkowe uruchomienie aplikacji bez konieczności wysokości. Te elementy w interfejsie użytkownika, które wymagają tokenu dostępu administracyjnego, są oznaczone ikoną tarczy jako identyfikatorem. Ta dekoracja wskazuje użytkownikowi, że korzystanie z tej funkcji wymaga zatwierdzenia przez administratora. Gdy aplikacja wykryje, że jeden z tych przycisków został wybrany, ma dwie następujące opcje.
- Aplikacja uruchamia drugi program przy użyciu narzędzia ShellExecute() w celu wykonania zadania administracyjnego. Ten drugi program zostanie oznaczony żądanąExecutionLevel of requireAdministrator, co spowoduje, że użytkownik zostanie poproszony o zatwierdzenie. Ten drugi program będzie działał z pełnym tokenem dostępu administracyjnego i będzie w stanie wykonać żądane zadanie. -OR-
- Aplikacja uruchamia obiekt COM za pomocą metody CreateElevatedComObject(). Ten interfejs API uruchomi obiekt COM z pełnym tokenem dostępu administracyjnego po zatwierdzeniu, a ten obiekt COM będzie w stanie wykonać żądane zadanie.
Po prostu muszę skopiować plik ... wydaje się nadmierny, aby rozwidlić nowy proces za pomocą powłoki ShellExecute() i nie wiem wystarczająco dużo o COM, aby wiedzieć, czy mogę go użyć do skopiowania pliku. Mam nadzieję, że ktoś może opublikować kod, który zapewnia sposób na skopiowanie pliku, a najlepiej wyjaśnić, jak ozdobić MenuItem za pomocą "dekoratora sheild".
Uwagi:
Mam spojrzał na UAC Demo provided by microsoft który odwołuje się kilka stanowisk, takich jak StackOverflow (Request Windows Vista UAC elevation if path is protected?) na tematy związane z uprawnieniami. Kod ma tylko przykład wywołania oddzielnego procesu.
To jest początek. Dzięki! – blak3r