Usuário com melhor resposta
Script para verificar uso do internet explorer

Pergunta
-
Boas,
preciso aprender como eu poderia filtrar a saída do comando tasklist, vou explicar exatamente.
Tenho o seguinte .bat já criado e funcionando pela metade para depois convertê-lo em vbs e usar(faço isso para testar se os comandos estão certos)
taskkill /IM explorer.exe /F
cmd /c start iexplore http://intranet
O que ele faz é matar o explorer.exe na inicialização da máquina(executa na inicialização através do iniciar básico do Windows) e iniciar o Internet explorer na página da minha intranet. Isso deixa a máquina com uma cara de quiosque para navegar na internet e se o cara dá um ctrl+shift+esc ele toma um DENY e não consegue mais nd além de usar o Internet Explorer, já bloqueei quaisquer outras tentativas que possam fazer pelo IE.
Até aqui blza, mas se o cara fechar o IE a máquina fica na telinha azul do tema clássico e não é mais possível utilizar nada e como eles sempre fecham o IE pensei em criar um laço que verifica por exemplo a cada 5 segundos se o IE está aberto ou não, se estiver aberto ok não faça nd, se estiver fechado execute o iexplore.exe.
Para isso pensei em usar o tasklist que gera a saída nesse formato:
Nome da imagem Identifi Nome da sessão Sessão# Uso de memór
========================= ======== ================ =========== ============
System Idle Process 0 Console 0 28 K
System 4 Console 0 260 K
smss.exe 416 Console 0 476 K
csrss.exe 464 Console 0 3.820 K
winlogon.exe 488 Console 0 13.292 K
services.exe 536 Console 0 10.420 K
lsass.exe 548 Console 0 32.324 K
svchost.exe 692 Console 0 5.248 K
svchost.exe 844 Console 0 5.928 K
Smc.exe 916 Console 0 11.384 K
Então através do filtro certo conseguirei verificar a execução do iexplore ou não e fazer o script decidir o que fazer, o que não sei é como fazer essa filtragem, tem alguns parâmetros de filtragem do próprio tasklist mas ainda não consegui fazer funcionar, ou se alguem tiver alguma idéia diferente já ajuda.
Obrigado.
Hugo.
hugoalvarezsp@hotmail.com
Respostas
-
Opa,
O loop estava no lugar errado, segue o script.
sProcessName = "Iexplore.exe"
strComputer = "."
strExec = "loop"
While strExec = "loop"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & sProcessName & "'")
If colProcesses.Count = 0 Then
CriarProcesso()
'Wscript.echo "Criar"
End If
'Intervalo entre verificações em milisegundos
WScript.Sleep(5000 )
Wend
Public Sub CriarProcesso()
Set objShell = WScript.CreateObject("WScript.Shell")
'Não esqueça de colocar espaço antes da URL
objShell.Run sProcessName & " http://www.google.com.br "
End SubSe for útil vote e feche a thread.
Abraço.
Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas- Marcado como Resposta hugo Alvarez sexta-feira, 23 de abril de 2010 20:02
Todas as Respostas
-
Segue um Vbs que faz o que vc precisa. Substitua o que estiver em negrito.
sProcessName = "Iexplore.exe "
strComputer = "."
strExec = "loop"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & sProcessName & "'")
While strExec = "loop"
If colProcesses.Count = 0 Then
CriarProcesso()
End If'Intervalo entre verificações em milisegundos
WScript.Sleep(5000 )
Wend
Public Sub CriarProcesso()
Set objShell = WScript.CreateObject("WScript.Shell")'Não esqueça de colocar espaço antes da URL
objShell.Run sProcessName & " http://www.google.com.br "
End SubSe for útil vote e qualquer dúvida poste.
Abraço.
Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas -
Opa,
obrigado pela ajuda, esse script não é bem o que pensei em fazer pq ele vai abrindo vários explorers independente de já haver um processo iexplore.exe ou não aberto mas já é mais de meio caminho andado, vou aproveitá-lo.
Obrigado.
hugoalvarezsp@hotmail.com -
Eu devo ter copiado algo errado, vou corrigir e já te passo.
Como vc queria via bat, você pode executar o comando tasklist | find "iexplore.exe" e depois dar um echo %errorlevel%
Se o %errorlevel% for 0 o iexplore está rodando, se for 1 não.
Vou corrigir e já posto.
Abraço.
Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas -
Opa,
O loop estava no lugar errado, segue o script.
sProcessName = "Iexplore.exe"
strComputer = "."
strExec = "loop"
While strExec = "loop"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & sProcessName & "'")
If colProcesses.Count = 0 Then
CriarProcesso()
'Wscript.echo "Criar"
End If
'Intervalo entre verificações em milisegundos
WScript.Sleep(5000 )
Wend
Public Sub CriarProcesso()
Set objShell = WScript.CreateObject("WScript.Shell")
'Não esqueça de colocar espaço antes da URL
objShell.Run sProcessName & " http://www.google.com.br "
End SubSe for útil vote e feche a thread.
Abraço.
Gabriel Nascimento MCP / MCSA / CCNA Não esqueça de contribuir para organização dos fóruns - Classifique as respostas- Marcado como Resposta hugo Alvarez sexta-feira, 23 de abril de 2010 20:02
-