2009-06-24 6 views
5

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.

Odpowiedz

2

I skończyło się w innym kierunku.Mój instalator utworzył skrót uruchamiania w folderze All Users/Startup, który przekazuje argument do aplikacji "startup".

Po uruchomieniu aplikacji sprawdziłbym, czy istnieje arg [0] .equals ("startup"), a następnie sprawdź, czy Settings1.Default.RunOnStartup == true.

Jeśli oba warunki były spełnione, natychmiast zamknę aplikację. Gdy aplikacja zostanie uruchomiona bez tego argumentu (np. Grupa programów menu Start), aplikacja ładuje się normalnie.

Ustawienie RunOnStartup to ustawienie o zakresie użytkownika, więc każdy użytkownik może zmienić bez wpływu na innych.

2

Choć to wciąż wydaje się obejmować co najmniej ponownym uruchomieniu lub tarła proces można znaleźć jakąś pomoc tutaj: UAC Shield for Elevation na CodeProject.com

+0

To jest początek. Dzięki! – blak3r

Powiązane problemy