从 Python 启动 Google 备份和同步,但不要等待

问题描述

作为我仅在解锁并安装我的 Bitlocked 驱动器后运行的启动脚本的一部分,我想启动 GB&S。为了防止 GB&S 自动启动,我修改了相关的注册表项,因为如果 GB&S 在驱动器安装之前启动,您必须在安装后手动调整 GB&S。

事实证明,从 Python 脚本启动 GB&S 非常简单:

subprocess.run('"%PROGRAMFILES%\Google\Drive\googledrivesync.exe"',shell=True,check=True,stdout=subprocess.PIPE,universal_newlines=True)

...但问题在于进程没有返回,这不是脚本的结尾。

一个任务运行一个 Autohotkey 脚本,它需要自己的非返回进程,所以我使用 subprocess.Popen:

command_args = [ r'D:\apps\AutoHotkey\AHK1.1.33\autohotkey.exe',r'D:\My Documents\sysadmin\startup_w10.ahk',]
subprocess.Popen( command_args )

...没问题。

但是当我尝试使用 Popen 技术启动 GB&S 时,出现访问错误

subprocess.Popen( [ '"C:/Program Files/Google/Drive/googledrivesync.exe"',],stderr=subprocess.STDOUT,)

...

[WinError 5] Access is denied

注意此脚本正在提升的命令提示符窗口中运行。

为什么 subprocess.run 应该没有问题,而 subprocess.Popen 有访问问题?似乎没有办法将 run 用于非返回进程(即,如果您这样做,您的 Python 脚本将在此时挂起)。

注意,我对提供给 Popen 的路径使用了许多排列,有时使用正斜杠,有时使用反斜杠。我不清楚 Popen 是否可以“看到”环境变量 PROGRAMFILES。但是,通过显示的示例,我大约有 99% 的把握“找到”了 .exe 文件,因为放入“错误”路径反而会得到错误“找不到文件”。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)