如何启动具有root权限的QProcess?

时间:2011-04-11 18:39:31

标签: c++ qt root rights qprocess

我需要从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或任何其他图形解决方案对我来说都不是一个有效的选项。

4 个答案:

答案 0 :(得分:2)

我强烈建议找一种方法让gphoto2以登录用户的权限运行。也许this article有一些有用的信息。

答案 1 :(得分:1)

如果您启用了sudo的发行版,请尝试将“gksudo”添加到您的进程的命令行:

QString gphotoProgram = "gksudo /usr/bin/gphoto2"

如果用户帐户被授权为sudo-er,它将询问用户密码,以便程序可以使用root权限运行。

答案 2 :(得分:1)

您还可以使用PolicyKit以sudo权限启动QProcess。

pkexec命令

QString gphotoProgram =“pkexec / usr / bin / gphoto2”;

答案 3 :(得分:0)

GNOME和KDE还没有自己的图形sudo包装器吗? (我自己就是Windows用户。)你可以使用QProcess启动“sudo”,并让它处理高程和随后的gphoto启动。