Em uma máquina do Windows Vista Business, tenho o conjunto de tarefas do Agendador de Tarefas do Windows para ser executado sempre que um usuário faz logon. A tarefa é executada como um determinado usuário administrativo elevado porque o script está sendo executado em um servidor de arquivos que exige autenticação do usuário e o script em questão realizará operações que precisam de controle total da máquina em que está sendo executado. O script é ótimo, acessa os recursos da rede e realiza tarefas administrativas fantasticamente, no entanto,% username% e outras variáveis de ambiente são para usuário elevado e não o usuário que realmente efetuou login.
Existe uma maneira de executar a tarefa elevada com as variáveis de ambiente atuais do usuário conectado? Ou há alguma maneira de descobrir qual conta o prompt elevado foi executado de dentro (se eu puder descobrir isso, posso obter as variáveis de ambiente para esse usuário)?
Para ajudar a esclarecer minha dúvida, aqui está um cenário e uma linha do meu script. Suponha que o usuário comum não administrador chamado Bob efetue login. O Agendador de Tarefas aciona o script como um usuário elevado iAmAdmin . O script executa um comando:
eventcreate /t information /id 118 /l SYSTEM /so "My Script" /d "%username% logged in on %date% at %time%"
O% username% na descrição aparece como iAmAdmin em vez de Bob . Existe uma maneira de obter o% username% (ou qualquer outra variável de ambiente) para a conta a partir da qual o prompt elevado foi iniciado (ou seja, Bob aparece em% username% em vez de iAmAdmin uma vez que a conta do Bob é a que está logada)?
( Nota: o uso de eventcreate foi apenas um exemplo. O script faz muito mais do que isso, então o problema aqui não é com eventcreate , mas algumas das operações requerem as variáveis de ambiente dos usuários logados.)