A solução mais simples seria configurar a tarefa agendada para ser executada em uma conta de administrador. Você não precisa usar a mesma conta que o usuário normalmente conectado - basta fornecer credenciais diferentes ao criar a tarefa.
Se você não quiser que "Administrador" tenha uma senha, basta criar uma conta dedicada apenas para a tarefa agendada. (Uma conta de usuário limitada também funcionará se você aplicar a correção abaixo).
O programa shutdown.exe
precisa de SeRemoteShutdownPrivilege para ser executado, em vez do usual SeShutdownPrivilege - meu palpite é que ele usa o mesmo RPC para desligar máquinas locais e remotas . (Isso explicaria a necessidade de uma senha também - por padrão, apenas os logins do console são isentos, o que obviamente não inclui o RPC.)
Você pode conceder SeRemoteShutdownPrivilege até secpol.msc
→ Políticas locais → Atribuição de direitos de usuário , editando o "Forçar desligamento do sistema remoto" entrada.
- Você pode criar uma conta dedicada para a tarefa e adicioná-la aqui (melhor escolha).
- Para uso interativo por qualquer usuário, você pode adicionar
INTERACTIVE
. - Para tarefas agendadas por qualquer usuário, adicione
BATCH
.