Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Quati Maldito

[Resolvido] Shell como administrador

Recommended Posts

Olá Galera!

 

Uso VB express 2008.

 

Tenho uma aplicação que quando "entende" que há atualização disponível, mostra um botão para que quando clicado, chame outro EXE para baixar as atualizações.

 

Shell("programa_de_atualizacao.exe", AppWinStyle.NormalFocus)

 

Criei uns instalador com o inno setup, maravilha, instala na maior!

 

O problema, é que depois de instalado, o programa fica na pasta arquivos de programa, e quando clico para atualizar, chama o EXE q baixa a atualização certinho, mas como precisa fazer o download de arquivos, da problema de acesso negado.

 

Se eu executar o exe q baixa a atualização clicando diretamente no icone do mesmo, e pedindo para executar como admin, funciona tranquilo.

 

A pergunta é: COMO EU FAÇO PARA CHAMAR VIA CÓDIGO, OUTRO EXE E QUE ESTE SEJA EXECUTADO COMO ADMIN?

 

Com isso deverá permitir o download e tudo estará resolvido.

 

Alguém pode me ajudar?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eis a solução:

 

       Dim process As System.Diagnostics.Process = Nothing
       Dim processStartInfo As System.Diagnostics.ProcessStartInfo

       processStartInfo = New System.Diagnostics.ProcessStartInfo()

       processStartInfo.FileName = "programa.exe"

       If System.Environment.OSVersion.Version.Major >= 6 Then ' Windows Vista or higher
           processStartInfo.Verb = "runas"
       Else
           ' No need to prompt to run as admin
       End If

       processStartInfo.Arguments = ""
       processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
       processStartInfo.UseShellExecute = True

       Try
           process = System.Diagnostics.Process.Start(processStartInfo)
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
       Finally

           If Not (process Is Nothing) Then
               process.Dispose()
           End If

       End Try

 

I love google!

 

Fonte: http://www.mztools.com/articles/2009/MZ2009007.aspx

 

Não que não tenha procurado antes, mas nem tudo vem no nosso tempo, certo?

 

Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.