Configurando Tarefas em Segundo Plano para Execução Automática como Administrador

2

Estou tentando descobrir como executar um programa que exige acesso de administrador à execução automática.

Alguns programas como DuMeter , Speedfan , ou ATI Tray Tools requerem acesso de administrador para interface com o hardware. Além disso, eles são tarefas em segundo plano que não seria necessário executar manualmente em cada inicialização, portanto, eles devem fazer parte da inicialização.

Eu olhei em volta e o mais próximo de uma solução que pude encontrar foi agendá-los como tarefas, mas isso não é bom porque não só atravessa a lista de tarefas, mas alguns programas precisam ser executados o mais rápido possível (por exemplo, para monitorar bytes transferidos na NIC, para ajustar a velocidade da ventoinha ou definir as cores da área de trabalho e as taxas de atualização).

Eu considerei convertê-los para funcionar como serviços, mas isso parece desnecessariamente excessivo.

Existe uma maneira melhor de executar programas como administrador?

Obrigado.


Atualizar
Apenas para ficar claro, o método para elevar as tarefas de execução automática não deve exigir a entrada do usuário, como aceitar o prompt do UAC. Claro, pode-se desabilitar o UAC, mas isso obviamente não é o ideal.

    
por Synetech 10.12.2010 / 04:34

5 respostas

0

Ok, eu descobri uma maneira de fazer isso sem muito muito incômodo ou expondo uma senha em claro .

Primeiro, você precisa ativar a conta de administrador. Essa é a parte mais inconveniente. Configurei minha conta normal para login automático, mas é irritante que a conta de administrador esteja disponível na tela de login, mesmo que eu nunca a veja. Alguns podem reclamar que, ao expor a conta do administrador, isso torna o sistema um pouco menos seguro, mas como você deve definir uma senha para a conta para usá-la na linha de comando, essa preocupação é irrelevante.

O método que escolhi requer o uso de algum tipo de programa SHELLEXECUTE que suporte programas em execução minimizados. (Pode-se usar o comando START embutido no interpretador de comandos CMD, mas isso faria com que uma janela de prompt de comando piscasse, enquanto um programa sem console sem janelas evitaria isso.) Há muito por onde escolher, mas eu usei um que Eu escrevi de volta quando.

Agora, basta criar uma entrada de registro na chave RUN que chama o ShellExecute, especificando a opção minimizar e usando RUNAS como o programa a ser executado. (Existem outros programas que podem rodar um programa usando uma conta diferente, se você preferir, mas o RUNAS vem com o Windows e pode salvar a senha para evitar incluí-la na linha de comando). Alternativamente, você pode criar um atalho normal do Windows e mover-se. para a pasta Startup .

Por fim, você precisará passar o programa (e quaisquer argumentos para ele) como um argumento para o RUNAS.

(Não se esqueça de executar o programa alvo - ou qualquer programa para esse assunto - com RUNAS, especificando a opção / SAVECRED, pelo menos uma vez sem executá-lo minimizado para salvar a senha .)

A linha de comando a ser usada pode ficar bastante complexa, porque é um programa que chama um programa chamando um programa. Piorá se você precisar especificar argumentos para o programa de destino e, pior ainda, se precisar incluir espaços. A situação das aspas pode rapidamente tornar-se enlouquecedora, pelo que será necessário muita experimentação.

Por exemplo, se você usar ShelExec da PJ Naughter e quiser executar o SpeedFan, use uma linha de comando assim:

shelexec /showcmd:sw_hide /EXE runas "/params:/user:administrator /savecred ""C:\Program Files\SpeedFan\speedfan.exe"""

Devo salientar que configurei as opções do SpeedFan para começar minimizadas, caso contrário, em vez de executar o speedfan "diretamente", precisaria executar um segundo programa ShellExecute com sua opção minimize para executar o SpeedFan (um programa chamando um programa chamando um programa chamando um programa). Conseguir isso para o trabalho quase certamente levaria até mesmo o mais completo administrador de computadores a enlouquecer.

Pode ser um pouco trabalhoso fazer com que a linha de comando funcione, mas parece funcionar bem para qualquer tarefa em segundo plano de execução automática que exija acesso administrativo. O melhor de tudo, ele funciona para contas de usuário padrão / limitadas, então você pode usar este método para ter programas auto-executados com privilégios elevados, sem dar um prompt UAC para usuários regulares.

(Embora funcione bem, ele tem seus aspectos negativos, principalmente porque ele roda os programas indiretamente, gerentes de execução automática como Autoruns, StartupDelayer, HijackThis etc. não poderão detectar qual programa real está sendo executado automaticamente - eles ainda funcionarão e poderão desativar / excluir / etc., mas não mostrarão o ícone correto ou informações sobre recursos de arquivos.)

    
por 11.12.2010 / 09:07
0

A execução de um speedfan como tarefa agendada foi uma ideia correta.
No windows 7 a tarefa pode ser programada não apenas pela data / hora, mas também pode ser executada com triggers. Mas você precisa configurá-lo de maneira correta.
A maneira mais simples é copiar todas as configurações da tarefa autorun do Skype. E também adicionei mais um gatilho para o cronograma de execução da tarefa: executar no logon. (Estou traduzindo configurações do meu idioma. Então a tradução pode não ser exata como você vê na sua versão em inglês)
Aqui está as configurações:

  1. Criar nova tarefa (NÃO TAREFA SIMPLES)
  2. nas guias Comuns
  3. atribua um nome ( Speedfan )
  4. Descrição: Speedfan
  5. Na opção , para executar a tarefa, use a conta : clique no botão Alterar ... , digite   Usuários clique em Verificar nomes se o processo foi bem sucedido você verá algo como BUILTIN \ Users
  6. Clique na caixa de seleção EXECUTE WITH HIGHEST RIGHT
  7. Clique na guia Acionadores .
  8. Clique em Criar
  9. selecione a segunda opção em uma lista ( no Logon )
  10. Clique em Ok
  11. Clique em Criar
  12. selecione quando você alterar ou criar a opção de tarefa
  13. Clique em OK . A tarefa está agora pronta e não pedirá mais uma elevação
  14. Selecione a guia Ações
  15. Clique em Criar
  16. Deixe a opção Executar programa e clique no botão Procurar - selecione o caminho para speedfan.exe (por exemplo: "C:\Program Files (x86)\SpeedFan\speedfan.exe" ) e digite suas opções de linha de comando no campo no lado direito. Minhas opções são -minimize -nosmbscan . Em seguida, clique em Ok
  17. E, finalmente, clique em Ok use isto para executar o CCC.EXE, o RaidCall e qualquer autoruns irritantes.
por 18.11.2013 / 11:13
0

Eu acho que usar o agendador de tarefas para iniciar automaticamente programas não é muito amigável, e às vezes tem efeitos colaterais para mim (por exemplo, o ícone da bandeja para um programa não é adicionado).

Para remediar isso, criei um programa chamado Elevated Startup que primeiro se relança com privilégios de administrador, depois lança todos os arquivos em um diretório. Como a Elevação de Inicialização está agora elevada, todos os programas que ela lança também recebem privilégios de administrador. O diretório está no menu Iniciar ao lado do diretório de inicialização clássico e funciona da mesma maneira.

Você pode encontrar um prompt do UAC quando o programa for reiniciado, dependendo das configurações do seu UAC.

Você pode obter o programa aqui: link

    
por 09.03.2015 / 03:22
0

Os programas que você mencionou normalmente têm uma opção RUN AT STARTUP dentro das configurações - normalmente é o caminho mais fácil.

A execução dos programas como tarefas permitirá que você os execute com privilégios elevados. Há uma opção para fazer exatamente isso na caixa de diálogo "Criar nova tarefa".

Você também pode verificar as propriedades de cada arquivo exe e marcar a caixa na página COMPATIBILIDADE para SEMPRE EXECUTAR COMO ADMINISTRADOR.

Mais detalhes aqui - link

e link

    
por 10.12.2010 / 05:55
0

Uma alternativa é usar PsExec da Microsoft - ele pode passar o nome de usuário e a senha para o comando que precisa ser executado.

    
por 11.12.2010 / 11:41