none
Script .BAT RRS feed

  • Pergunta

  • Olá

    Estou desenvolvendo um script para instalação de programas automatizada, porém, uma das primeiras tarefas do script é desativar o UAC (Controle de Conta de Usuário) para que a instalação de todos os programas ocorra normalmente, sem precisar da intervenção do técnico ou cliente para clicar em 'Sim', sempre que a perguntinha básica e 'chata' aparecer na tela. Porém, após a desativação desse serviço, a máquina necessita ser reiniciada. Aí que entra o 'Q' da questão...

    Como farei?

    A princípio pensei em fazer um .BAT para a desativação do UAC e outro só para a instalação dos programas. O primeiro .BAT desabilitaria o UAC e criaria na pasta Inicializar do Windows um atalho para o segundo .BAT e logo após o micro reiniciaria. Após reiniciado, o micro entraria no Windows e carregaria automaticamente o segundo .BAT e assim ocorreria normalmente a instalação dos programas. No final do segundo .BAT colocava-se para que fosse apagado do Inicializar o atalho para o segundo .BAT.

    Essa seria minha ideia, até porque não sei se tem como por ambos scripts num mesmo .BAT que faça o mesmo serviço que eu necessito que faça.

    Aguardo respostas e sugestões

    Obrigado


    Jonas Moura

    quarta-feira, 11 de abril de 2012 13:22

Respostas

  • Viva,

    Para desligar o UAC eu utilizo o script em baixo, agora não sei se depois de executar tens que reinicializar o computador, mas acho que sim.

    Este script desliga o UAC e cria um ficheiro na pasta %Temp% do computador para verificares se o script foi executado com sucesso.

    Verifica se te interessa.

    On Error Resume Next

    Dim objShell
    Dim objFSO
    Dim strFile

    Set objShell=Wscript.CreateObject("Wscript.Shell")
    Err.Clear

    objShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA", 0, "REG_DWORD"


    If (Err.Number <> 0) Then
     Call CreateControlFile(Err.Description)
     Wscript.Quit(1)
    Else
     Call CreateControlFile("OK")
     Wscript.QUit(0)
    End If

    Function CreateControlFile(ErrorMessage)
     Set objFSO=CreateObject("Scripting.FileSystemObject")
     Set strFile=objFSO.CreateTextFile(objFSO.GetSpecialFolder(2) & "\UACControl_" & wscript.ScriptName & ".txt", True)
     strFile.WriteLine(ErrorMessage)
     strFile.Close
    End Function

    Set objShell=Nothing
    Set objFSO=Nothing
    Set strFile=Nothing

    terça-feira, 17 de abril de 2012 22:57