Я создал собственное приложение для родительского контроля, чтобы отслеживать активность своих детей. Единственный графический интерфейс приложения - это значок на панели задач. Программа устанавливается от имени администратора. Я бы хотел, чтобы эта программа запускалась автоматически от имени администратора при запуске Windows, чтобы обычные пользователи не могли убить ее из диспетчера задач.
Я могу создать ключ реестра по адресу:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
чтобы он запускался автоматически при запуске Windows. Проблема в том, что программа запускается как авторизованный (стандартный) пользователь.
Как мне заставить его работать в повышенном режиме? Возможно ли такое вообще в Win7?
.login
сценарий в Unix), а не для запуска во время загрузки (например, какой-либо/etc/rc/...
сценарий).Ответы:
Вам необходимо подключить его к планировщику задач, чтобы он запускался после входа пользователя в систему с использованием учетной записи пользователя, имеющей административный доступ в системе, с наивысшими привилегиями, которые предоставляются процессам, запускаемым этой учетной записью.
Это реализация, которая используется для автоматического запуска процессов с правами администратора при входе в систему как обычный пользователь.
Я использовал его для запуска вспомогательного процесса «OpenVPN GUI», которому для правильной работы требуются повышенные привилегии, и поэтому он не запускается должным образом из раздела реестра.
Из командной строки вы можете создать задачу из XML-описания того, что вы хотите выполнить; так, например, у нас есть это, экспортированное из моей системы, которое запускает блокнот с наивысшими привилегиями, когда я вхожу в систему:
<?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>
и он зарегистрирован в командной строке администратора, используя:
источник
источник
Это невозможно.
Однако вы можете создать службу, работающую от имени администратора.
Служба может запускаться автоматически при запуске и взаимодействовать с вашим существующим приложением.
Когда приложению нужно что-то сделать от имени администратора, оно может попросить службу сделать это за него.
Помните, что сразу несколько пользователей могут войти в систему.
источник
Я думаю, что использование планировщика задач для автоматического запуска программ не очень удобно для пользователя, и иногда у меня были побочные эффекты (например, значок в трее для программы не добавлялся).
Чтобы исправить это, я сделал программу под названием Elevated Startup, которая сначала перезапускается с правами администратора, а затем запускает все файлы в каталоге. Поскольку расширенный запуск теперь имеет повышенные права, всем программам, которые он запускает, также предоставляются права администратора. Каталог находится в меню «Пуск» рядом с классическим каталогом «Автозагрузка» и работает примерно так же.
Вы можете столкнуться с одним диалоговым окном UAC при перезапуске программы, в зависимости от ваших настроек UAC.
Вы можете получить программу здесь: https://stefansundin.github.io/elevatedstartup/
источник
Настройка совместимости вашего приложения с администратором
(Run theprogram as an administrator)
.Подключите его
task scheduler
, затем выключитеUAC
.источник
Вы можете сделать это, установив задачу при работе от имени администратора через библиотеку TaskSchedler. . Я делаю здесь предположение, что .NET / C # является подходящей платформой / языком с учетом ваших связанных вопросов.
Эта библиотека предоставляет вам детальный доступ к API планировщика заданий, поэтому вы можете настроить параметры, которые вы не можете иначе установить через командную строку с помощью вызова
schtasks
, например приоритет запуска. Будучи приложением для родительского контроля, вы хотите, чтобы у него был приоритет запуска 0 (максимум), чтоschtasks
по умолчанию создаст приоритет 7.Ниже приведен пример кода установки правильно настроенной задачи запуска для запуска желаемого приложения от имени администратора на неопределенный срок при входе в систему. Этот код установит задачу для того самого процесса, из которого она запущена.
источник
td
благодарности за то, что указали мне в этом направлении.Я написал программу farmComm, чтобы решить эту проблему. Я выпустил его как с открытым исходным кодом и как общественное достояние.
Если он не соответствует вашим критериям, вы можете легко изменить его для этого.
ферма
Исходные скрипты доступны здесь:
https://github.com/r-alex-hall/farmComm
источник
Вы также должны учитывать последствия для безопасности, связанные с запуском процесса в качестве пользователя уровня администратора или службы. Если какой-либо ввод не проверяется должным образом, например, если он прослушивает сетевой интерфейс. Если синтаксический анализатор для этого ввода не проверяет правильность, им можно злоупотребить и, возможно, привести к эксплойту, который может запустить код от имени пользователя с повышенными правами. в примере с Абатищевым это не должно быть большой проблемой, но если он будет развернут в корпоративной среде, сделайте оценку безопасности перед широкомасштабным развертыванием.
источник
Я думаю, что планировщик задач был бы излишним (имхо). Есть папка автозагрузки для win7.
C: \ Users \ miliu \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup
Просто создайте ярлык для автозапуска Applicaton, отредактируйте свойства ярлыка и пусть он всегда запускается от имени администратора.
Ваши дети, конечно, могут закрыть его, но если они разбираются в технологиях, они всегда найдут способ удержать вас. Я знаю, что делал, когда был моложе.
Удачи!
источник