Tarefa agendada em execução como SYSTEM - executa algo como usuário atual?

2

Eu tenho uma tarefa agendada que executa um arquivo em lote que faz algumas coisas. Eu quero o arquivo de lote para lançar outro arquivo de lote que é executado no espaço do usuário; ou seja,% username% == o usuário atualmente logado, com permissões de usuário, etc. Como posso executar um comando sob o usuário atual, uma vez que a tarefa agendada é executada com permissões SYSTEM?

Eu preciso disso para o Windows XP e o Windows 7.

    
por Ricket 15.03.2011 / 14:57

3 respostas

3

Desde a introdução dos Serviços de Terminal, o "usuário atual" pode ser plural. Até o XP suporta troca rápida de usuário.

O mais próximo que você pode obter é "usuário conectado à sessão do console". Para isso, use WTSGetActiveConsoleSessionId () + WTSQueryUserToken () + CreateEnvironmentBlock () + CreateProcessAsUser () .

Eu escrevi isto: link - Compile, execute com o caminho completo para o seu arquivo de lote como argumentos.

Sim, isso requer o .NET Runtime, mas é provável que seus sistemas já o tenham. A parte do compilador do Runtime também: %SystemRoot%\Microsoft.NET\Framework64\v3.5\csc.exe (qualquer versão que comece com v2.* funcionará).

Nota: WTSQueryUserToken () requer que o programa esteja sendo executado como LocalSystem . (De acordo com os documentos , SeTcbPrivilege não é suficiente, mas eu não verifiquei.

    
por 15.03.2011 / 18:11
2

Em "Ao executar a tarefa, use a seguinte conta de usuário:" você pode configurá-la para o grupo "BUILTIN \ Users", ela executará a tarefa como o usuário logado atual.

    
por 02.07.2012 / 23:22
0

Eu não acho que você pode configurá-lo através da ferramenta agendador de tarefas para usar dinamicamente o usuário logado atual, mas você pode especificar uma conta de usuário para usar além do sistema na própria tarefa. Ambas as opções abaixo exigirão que você tenha a senha para o nome de usuário.

Windows 7: Na janela de propriedades da tarefa, há um botão em Opções de segurança chamado "Alterar usuário ou grupo".

Windows XP: Na janela de propriedades da tarefa, você pode inserir um nome de usuário no campo "Executar como".

Uma opção final pode ser criar um script de inicialização que criará a tarefa quando o usuário fizer logon e um script complementar de logoff para excluí-lo quando fizerem logoff. O comando é "Schtasks", que é quase idêntico no XP e 7. A documentação para o comando está disponível no site da MS no seguinte site: link

    
por 15.03.2011 / 15:23