问题描述
我有一些传感器供应商提供给我的.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)
编辑:这仍然存在管理员问题,但是我可以为此更改计算机上的安全设置。