none
Script para verificar uso do internet explorer RRS feed

  • 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
    quinta-feira, 22 de abril de 2010 13:54

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 Sub

     

    Se 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
    sexta-feira, 23 de abril de 2010 13:32

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 Sub

    Se 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
    quinta-feira, 22 de abril de 2010 17:59
  • 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
    sexta-feira, 23 de abril de 2010 13:11
  • 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
    sexta-feira, 23 de abril de 2010 13:21
  • 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 Sub

     

    Se 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
    sexta-feira, 23 de abril de 2010 13:32
  • Agora deu vlw a ajuda.
    hugoalvarezsp@hotmail.com
    sexta-feira, 23 de abril de 2010 20:01