如何以根权限启动QProcess
How to launch a QProcess with root rights?
我需要从Qt程序启动gphoto2
。我这样做:
QString gphotoProgram = "/usr/bin/gphoto2";
QStringList gphotoArguments;
gphotoArguments << "--capture-image";
QProcess *gphotoProcess = new QProcess(this);
gphotoProcess->start(gphotoProgram, gphotoArguments);
但是它永远不会以这种方式进入Running
状态,因为gphoto2
通常需要管理员权限才能在命令行上启动。
我如何启动这个QProcess
与适当的权利,使gphoto2
工作?
编辑:我确切地说,我希望用户不必输入密码,这意味着gksudo, kdesudo或任何其他图形解决方案对我来说都不是一个有效的选择。
我强烈建议找到一种方法,允许gphoto2在登录用户的权限下运行。也许这篇文章有一些有用的信息。
如果您的发行版启用了sudo,请尝试在进程的命令行中添加"gksudo":
QString gphotoProgram = "gksudo /usr/bin/gphoto2"
如果用户帐户被授权为sudo-er,它将询问用户密码,以便程序可以以root权限运行。
您也可以使用PolicyKit以sudo权限启动QProcess
pkexec命令QString gphotoProgram = "pkexec/usr/bin/gphoto2";
难道GNOME和KDE没有自己的图形sudo包装器吗?(我自己就是Windows用户。)您可以使用QProcess来启动"sudo",并让它来处理仰角和随后的gphoto启动。
相关文章:
- QProcess不启动java应用程序
- QProcess可以启动程序,但不能启动python(命令行)
- 如何在Windows上通过QProcess启动提升的子进程?
- 该命令在QProcess中启动,不会返回Linux上的响应
- 启动后向 QProcess 发出命令
- Qprocess启动的嵌套远程过程仍然是僵尸
- 将CTRL C事件发送到使用Windows上使用Qprocess启动的过程
- 无法使用 QProcess 启动 g++
- 在线程内启动 QProcess
- QProcess启动过程(搅拌机.exe)具有多个参数
- QT:无法在启动/停止按钮中终止 Qprocess
- 启动 QProcess 并一次读取一行输出
- Qt:无法使用QProcess启动Windows控制台
- 如何使用QProcess启动Shell脚本
- 在窗口错误中使用QProcess启动进程:"Timers can only be used with threads started with QThread"
- 如何并行启动几个QProcess并阻塞,直到所有QProcess都退出
- 暂停并恢复 Qt 中由 QProcess 启动的子进程
- CreateProcess可以启动一个进程,但QProcess不能.为什么
- 在参数列表中使用绝对路径启动QProcess
- 如何以根权限启动QProcess