none
VBScript para automatizar inicialização de programas e serviços no Windows 7 RRS feed

  • Pergunta

  • Olá pessoal,

    Estou utilizando o VMware Player no Windows 7. O VMware possui alguns serviços que por padrão são inicializados automaticamente, isso pode resultar em um consumo maior de recursos do computador e que pode ser muitas vezes desnecessário se não estivermos utilizando a aplicação. Gostaria de ajuda para resolver isso. Minha ideia é criar um script que ao ser executado verifique se há um processo existente em execução para o aplicativo "vmplayer.exe". Caso não exista ele deve iniciar os serviços necessários ao VMware Player e depois iniciar o aplicativo. Caso já exista um processo em execução significa que o vmware já está sendo utilizado e que eu desejo fechá-lo. Nesse caso ele deve fechar o aplicativo, matando seu processo e depois parar os serviços do vmware. Dessa forma eu posso usar o mesmo script para abrir ou fechar o VMware e não precisarei me preocupar com os serviços do vmware pois o script irá iniciá-los e finalizá-los conforme necessário. Fiz algumas tentativas porém sem sucesso:

    @echo off
    
    :: BatchGotAdmin
    :-------------------------------------
    REM  --> Check for permissions
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    
    REM --> If error flag set, we do not have admin.
    if '%errorlevel%' NEQ '0' (
        echo Requesting administrative privileges...
        goto UACPrompt
    ) else ( goto gotAdmin )
    
    :UACPrompt
        echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
        set params = %*:"=""
        echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    
        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
        exit /B
    
    :gotAdmin
        pushd "%CD%"
        CD /D "%~dp0"
    
    tasklist | find /i "vmplayer.exe"
    IF ERRORLEVEL 1 (
    	net start VMAuthdService
    	net start VMUSBArbService
    	start vmplayer.exe
    ) ELSE (
    	taskkill /f /im "vmplayer.exe" 
    	net stop VMUSBArbService
    	net stop VMAuthdService)

    Primeiro o script tenta obter privilégios administrativos e depois procura o processo vmplayer.exe na tasklist. Caso não encontrar o valor de ERRORLEVEL será 1 e então os serviços serão iniciados e o programa executado, caso contrário o vmware é fechado e os serviços parados. Este arquivo está localizado no mesmo diretório do executável vmplayer, dessa forma não preciso indicar o caminho completo do arquivo.

    Não está funcionando. Se alguém puder ajudar agradeço desde já.

    Rodrigo Rocha


    Rodrigo Rocha


    domingo, 29 de março de 2015 18:14