使用Python自动运行.exe

问题描述

我有一些传感器供应商提供给我的.exe应用程序。它们使我可以在特定时间获取数据并转换文件类型。但是,我需要手动通过cmd运行它们,并且我正在尝试使用Python自动执行该过程。我无法使它正常工作。

到目前为止,我有

import sys
import ctypes
import subprocess

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False
if is_admin():
    process = subprocess.Popen('arcfetch C:/reftek/arc_pas *,2,*,20:280:12:00:000,+180',shell=True,cwd="C:/reftek/bin",stdout=subprocess.PIPE,stderr=subprocess.PIPE,)
    out = process.stdout.read()
    err = process.stderr.read()

else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None,"runas",sys.executable,__file__,None,1)

但是,“ arcfetch” exe没有运行。 另外,这要求我允许Python每次都对硬盘进行更改,但这不会自动进行。

我们将不胜感激!

解决方法

经过一番闲逛并获得了评论的帮助,我得以使它开始工作!

最终代码:

import sys
import ctypes
import subprocess

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False
if is_admin():
    subprocess.run('arcfetch C:/reftek/arc_pas *,2,*,20:280:12:00:000,+180',shell=True,check=True,cwd="C:/reftek/bin")

else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None,"runas",sys.executable,__file__,None,1)

编辑:这仍然存在管理员问题,但是我可以为此更改计算机上的安全设置。