问题描述
作为我仅在解锁并安装我的 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 (将#修改为@)