Stworzyłem własną aplikację do kontroli rodzicielskiej, aby monitorować aktywność moich dzieci. Jedynym GUI aplikacji jest ikona paska zadań. Program jest instalowany jako administrator. Chciałbym, aby ten program był uruchamiany automatycznie jako administrator podczas uruchamiania systemu Windows, aby zwykli użytkownicy nie mogli go zabić z poziomu menedżera zadań.
Mogę utworzyć klucz rejestru pod adresem:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
aby uruchamiał się automatycznie podczas uruchamiania systemu Windows. Problem w tym, że program jest uruchamiany jako zalogowany (standardowy) użytkownik.
Jak mogę sprawić, by działał w trybie podwyższonym? Czy to w ogóle możliwe w Win7?
.login
skrypt w systemie Unix), a nie do uruchamiania podczas uruchamiania (jak w przypadku niektórych/etc/rc/...
skryptów).Odpowiedzi:
Musisz go podłączyć do harmonogramu zadań, tak aby był uruchamiany po zalogowaniu użytkownika, przy użyciu konta użytkownika, który ma dostęp administracyjny do systemu, z najwyższymi uprawnieniami, jakie mają procesy uruchamiane przez to konto.
Jest to implementacja używana do automatycznego uruchamiania procesów z uprawnieniami administratora podczas logowania się jako zwykły użytkownik.
Użyłem go do uruchomienia procesu pomocniczego `` OpenVPN GUI '', który wymaga podwyższonych uprawnień do poprawnego działania, a zatem nie uruchamia się poprawnie z klucza rejestru.
Z wiersza poleceń możesz utworzyć zadanie na podstawie opisu XML tego, co chcesz osiągnąć; na przykład mamy to, wyeksportowane z mojego systemu, które uruchomiłoby Notatnik z najwyższymi uprawnieniami po zalogowaniu:
<?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2015-01-27T18:30:34</Date> <Author>Pete</Author> </RegistrationInfo> <Triggers> <LogonTrigger> <StartBoundary>2015-01-27T18:30:00</StartBoundary> <Enabled>true</Enabled> </LogonTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>CHUMBAWUMBA\Pete</UserId> <LogonType>InteractiveToken</LogonType> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT0S</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>"c:\windows\system32\notepad.exe"</Command> </Exec> </Actions> </Task>
i jest rejestrowany przez wiersz poleceń administratora za pomocą:
źródło
źródło
To jest niemożliwe.
Możesz jednak utworzyć usługę działającą jako administrator.
Usługa może działać automatycznie podczas uruchamiania i komunikować się z istniejącą aplikacją.
Gdy aplikacja musi zrobić coś jako administrator, może poprosić usługę o zrobienie tego za to.
Pamiętaj, że jednocześnie może być zalogowanych wielu użytkowników.
źródło
Myślę, że korzystanie z harmonogramu zadań do autostartu programów nie jest zbyt przyjazne dla użytkownika, a czasami ma dla mnie efekty uboczne (np. Ikona tacki programu nie jest dodawana).
Aby temu zaradzić, stworzyłem program o nazwie Elevated Startup, który najpierw uruchamia się ponownie z uprawnieniami administratora, a następnie uruchamia wszystkie pliki w katalogu. Ponieważ podwyższony poziom uruchamiania jest teraz podwyższony, wszystkie programy, które następnie uruchamia, mają również uprawnienia administratora. Katalog znajduje się w menu Start obok klasycznego katalogu startowego i działa bardzo podobnie.
Możesz napotkać jedno okno dialogowe UAC, gdy program uruchomi się ponownie, w zależności od ustawień UAC.
Możesz pobrać program tutaj: https://stefansundin.github.io/elevatedstartup/
źródło
Ustawianie zgodności aplikacji z administratorem
(Run theprogram as an administrator)
.Podłącz go
task scheduler
, a następnie wyłączUAC
.źródło
Możesz to zrobić, instalując zadanie podczas pracy jako administrator za pośrednictwem biblioteki TaskSchedler . Zakładam tutaj, że .NET / C # jest odpowiednią platformą / językiem, biorąc pod uwagę powiązane pytania.
Ta biblioteka zapewnia szczegółowy dostęp do interfejsu API harmonogramu zadań, dzięki czemu można dostosować ustawienia, których nie można ustawić w inny sposób za pomocą wiersza poleceń, wywołując
schtasks
, takie jak priorytet uruchamiania. Będąc aplikacją do kontroli rodzicielskiej, chcesz, aby miała ona priorytet uruchamiania równy 0 (maksymalny), coschtasks
spowoduje domyślnie utworzenie priorytetu 7.Poniżej znajduje się przykład kodu instalowania poprawnie skonfigurowanego zadania startowego, aby podczas logowania uruchamiać żądaną aplikację jako administrator przez czas nieokreślony. Ten kod zainstaluje zadanie dla samego procesu, z którego jest uruchamiane.
źródło
td
podziękowań za wskazanie mi tego kierunku.Program, który napisałem, farmComm, może rozwiązać ten problem. Wydałem go jako open source i Public Domain.
Jeśli nie spełnia Twoich kryteriów, możesz łatwo to zmienić, aby to zrobić.
farmComm:
Skrypty źródłowe są dostępne tutaj:
https://github.com/r-alex-hall/farmComm
źródło
Należy również wziąć pod uwagę konsekwencje dla bezpieczeństwa wynikające z uruchamiania procesu jako użytkownik na poziomie administratora lub jako usługa. Jeśli jakiekolwiek wejście nie jest prawidłowo sprawdzane, na przykład jeśli nasłuchuje na interfejsie sieciowym. Jeśli parser dla tych danych wejściowych nie sprawdza poprawności poprawnie, może to być nadużycie i prawdopodobnie prowadzić do exploita, który mógłby uruchomić kod jako użytkownik z podwyższonym poziomem uprawnień. w przykładzie abatishcheva nie powinno to stanowić większego problemu, ale jeśli miałoby zostać wdrożone w środowisku przedsiębiorstwa, należy przeprowadzić ocenę bezpieczeństwa przed wdrożeniem na szeroką skalę.
źródło
Myślę, że harmonogram zadań byłby przesadą (imho). Istnieje folder startowy dla win7.
C: \ Users \ miliu \ AppData \ Roaming \ Microsoft \ Windows \ Menu Start \ Programy \ Startup
Po prostu utwórz skrót do swojego autostartu Applicaton, edytuj właściwości skrótu i używaj go zawsze jako administrator.
Twoje dzieci mogą to oczywiście zamknąć, ale jeśli są obeznane z technologią, zawsze znajdą sposób, aby Cię chronić. Wiem, że tak było, kiedy byłem młodszy.
Powodzenia!
źródło