Execute o arquivo .exe via Python como Administrador

4

Eu tenho um problema ao iniciar um arquivo .exe .exe como direitos de administrador.

Eu também tentei:

subprocess.call(['runas', '/user:Administrator', 'myfile.exe'])

Mas então eu tenho que digitar uma senha ..

Existe alguma chance de deixar isso de lado?

Obrigado!

PS: procurei por algumas horas ... não encontrei nada!

    
por Astraioz 04.07.2013 / 20:01

4 respostas

2

A única maneira de saber o que você diz é usar o "Application Compatibility Toolkit" link

E como usá-lo: link

Fonte: Você pode desativar o UAC para um único aplicativo ?

    
por 04.07.2013 / 20:31
2

É uma pequena rotunda, mas outra forma é executar um comando shell, lançar o Powershell (vem com o Windows) e depois dizer ao Powershell para executar o .exe como Admin:

(lembre-se que o comando shell está no CMD, então você pode escapar com barra invertida, não o backtick do Powershell).

Powershell command: Start-Process "executable.exe" -ArgumentList @("Arg1", "Arg2") -Verb RunAs

CMD running Powershell: Powershell -Command "& { Start-Process \"executable.exe\" ... }"

Python running CMD runnning Powershell:
os.system(r'''
Powershell -Command "& { Start-Process \"notepad.exe\"
 -ArgumentList @(\"C:\Windows\System32\drivers\etc\hosts\")
 -Verb RunAs } " '''
    
por 15.05.2014 / 01:02
0

Eu percebo que estou chegando atrasado nisto e pode não ser uma solução realmente elegante ... mas se você abrir um prompt de comando elevado e então lançar seu script python, os executáveis chamariam com "subprocess.call "não será lançado com a mesma elevação da janela do CMD?

    
por 02.10.2014 / 08:40
0

Esta resposta funcionou para mim

import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    # Code of your program here
else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    
por 12.06.2018 / 07:02