Executa a tarefa do agendador de tarefas por demanda da conta de usuário limitada no Windows 7

5

Meu objetivo é que, por um limite, seja usado para executar um script netsh que exija privilégios administrativos:

netsh wlan stop hostednetwork
netsh wlan start hostednetwork

De minha conta administrativa, criei uma tarefa do agendador de tarefas que executa esse script com privilégios elevados e salva minha senha de administrador nele. Funcionou. Mas a tarefa não é visível a partir da conta de usuário limitada.

Eu tentei criar a mesma tarefa a partir do agendador de tarefas do usuário limitado - não aconteceu, ele me disse que o usuário não tem direitos para criar a tarefa.

Tentei schtasks.exe do usuário limitado, ele também não mostra a tarefa que eu quero executar.

Existe uma maneira de compartilhar a tarefa que criei da conta administrativa com um usuário limitado para que ele possa executá-la sob demanda? Ou dar-lhe privilégios para criar a tarefa sozinho?

    
por Boris Hamanov 18.03.2012 / 12:25

2 respostas

15

Ir para C: \ Windows \ System32 \ Tasks encontra a tarefa relacionada e atribui direitos de "leitura e execução" ao usuário que você deseja acessá-la. Certifique-se de atribuir a "somente objeto atual". Em seguida, a tarefa será visível e executável a partir do usuário limitado, e funcionará se você salvou suas credenciais e verificou "executar se o usuário está conectado ou não."

    
por 18.03.2012 / 13:16
2

Sim, isso é um problema terrível. A resposta escolhida não funciona mais. Estou usando o log de eventos como uma solução:

  1. Registre o acionador 'em um evento' para sua tarefa, por exemplo "Aplicação", "Aplicação", 30204 (o seu número mágico para esta tarefa)

  2. Registre um evento com este id. Para fazer isso a partir de linha de comando / lote, eu escrevi app manequim de 3 linhas .Net.

    using (var eventLog = new EventLog("Application"))
    {
        eventLog.Source = "Application";
        eventLog.WriteEntry("EventLogTriggeer", EventLogEntryType.Information, int.Parse(args[0]));
    }

No meu caso, resolvi a segurança de implantações automatizadas no ambiente de preparação. O GitHub faz uma solicitação POST para o meu backend node.js que é executado sob a identidade do AppPool do IIS com acesso r / a à pasta. Ele verifica a assinatura de hash e executa:

// delegate to priviledged task
exec('%SystemDrive%\apps\EventLogTrigger 30204', (err, stdout, stderr)=> /* ... */);

A parte restante é feita por meio de uma tarefa agendada que executa o script de implantação sob o usuário que tem permissões para modificar arquivos no inetpub. As tarefas são configuradas individualmente para cada servidor e cada website, portanto, o caminho é codificado:

C:\inetpub\ta\autodeploy.cmd
    
por 12.12.2017 / 01:15