
Согласно комментариям в принятом ответе наэтотвопрос, у меня проблемы с запуском запланированной задачи, которая вызывает shutdown.exe
, даже если пользователь является администратором. Я администрирую чужую машину, используя его основную учетную запись, поэтому я не могу изменить слишком много, так как им нравится все так, как есть.
Что действительно странно, так это то, что я могу запустить задачу только если:
- Пользователь является администратором.
- Они определили пароль.
По какой-то странной причине, неизвестной мне, пользователь не только должен быть администратором, но идолжениметь пароль на учетной записи, чтобы запланированная задача могла быть запущена. В противном случае я получаю ошибки об отказе в доступе и задача не запускается.
Как сделать так, чтобы это работало, не заставляя пользователя устанавливать пароль для своей учетной записи?
По сути, оставшаяся цель — выключать компьютер (независимо от того, кто вошел в систему или нет) в 23:00 каждый вечер.
При попытке задать задачу в программе я сталкиваюсь со следующими ошибками Scheduled Tasks
:
Произошла ошибка при попытке задать данные учетной записи задачи.
Конкретная ошибка:
0x8007005: Доступ запрещен.
У вас нет разрешения на выполнение запрошенной операции.
Для справки, вот моя политика безопасности, вы можете видеть, что у моего пользователя есть разрешение на принудительное выключение и ручное выключение компьютера:
решение1
Самым простым решением будет настроить указанную запланированную задачу на запуск под учетной записью администратора. Вы делаетенетнеобходимо использовать ту же учетную запись, что и обычно входящий в систему пользователь — просто укажите другие учетные данные при создании задачи.
Если вы не хотите, чтобы у «Администратора» был пароль, вы можете просто создать специальную учетную запись только для запланированной задачи. (Ограниченная учетная запись пользователя также подойдет, если вы примените исправление ниже.)
Программа shutdown.exe
нуждается вSeRemoteShutdownPrivilegeбежать, вместо обычногоSeShutdownPrivilege– я предполагаю, что он использует один и тот же RPC для выключения как локальных, так и удаленных машин. (Это также объясняет необходимость пароля – по умолчанию исключение составляют только входы в консоль, что, очевидно, не включает RPC.)
Вы можете предоставитьSeRemoteShutdownPrivilegeчерез secpol.msc
→Местная политика→Назначение прав пользователя, отредактировав запись «Принудительное завершение работы из удаленной системы».
- Вы можете создать отдельную учетную запись для задачи и добавить ее здесь (лучший выбор).
- Для интерактивного использования командной строки любым пользователем вы можете добавить
INTERACTIVE
. - Для запланированных задач любого пользователя добавьте
BATCH
.
решение2
Это более простое решение:
Если вы хотите разрешить запускать только локальным пользователям %windir%\system32\shutdown.exe -s -t 0
, предоставьте SeRemoteShutdownPrivilege
группе INTERACTIVE
. Членами этой группы являются только локальные пользователи.
Как это сделать: Запустите secpol.msc
. Откройте Security Settings \ Local Policies \ User Rights Assignment
. Дважды щелкните Force shutdown from a remote system
в правой панели. Щелкните Add User or Group
. Введите имя INTERACTIVE
в текстовое поле и щелкните Check names
, затем щелкните OK
, и OK
еще раз.
Источник: http://blogs.msdn.com/aaron_margosis/archive/2006/01/27/518214.aspx
решение3
Я вижу, что вы все еще пытаетесь запланировать задачу для учетной записи администратора без пароля.
Я рассчитываю на то, что единственная другая настройка, которая имеет отношение к пустым паролям, — это «Ограничить использование пустых паролей локальной учетной записью только для входа в консоль».
Попробуйте эту настройку. Она находится в разделе «Параметры безопасности», прямо под назначениями прав пользователей.
решение4
Существуют некоторые ограничения на создание задач для учетных записей с пустыми паролями.
Вы можете создать задачу, которая запустит shutdown.exe, но вам нужно будет установить опцию «Не хранить пароль». Это на Windows 7 SP1, если вы используете другую ОС, сообщите нам.
Для Windows XP используйте командную строку AT-инструмента:
at 23:00 /every:monday,tuesday,wednesday,thursday,friday,saturday,sunday shutdown /s