Vala 和 PolicyKit

Posted

技术标签:

【中文标题】Vala 和 PolicyKit【英文标题】:Vala and PolicyKit 【发布时间】:2013-02-09 03:03:05 【问题描述】:

我正在 Vala 中创建一个简单的基于 GTK+ 的应用程序,它应该能够写入系统目录,因此它需要 root 访问权限。我意识到授予完全 root 访问权限是个坏主意,所以我需要一种方法来获得临时权限。

理论上,PolicyKit D-Bus 服务是完成这项工作的工具,但我不知道如何使用它,更不用说在 Vala 代码中了。任何见解将不胜感激。

更新: 我做了一些进一步的挖掘。我的出发点是this。所以基本上我需要的是找出如何使这些解决方案适应 PolicyKit。为此,需要找到PolicyKit的D-Bus接口。我找到了here。 (奇怪的是我没有在我的本地 /usr/share/dbus-1/interfaces 文件夹中找到它。)但现在我不知道如何继续。

【问题讨论】:

【参考方案1】:

polkit Reference Manual 包含一些很好的信息,包括对writing polkit applications 的高级概述。

与其直接使用 D-Bus 接口,不如考虑使用libpolkit-gobject-1 库。您可以直接使用 GIR,也可以使用 vapigen 生成 VAPI(我会推荐)。 Here 是我刚刚生成的。我对 API 不是很熟悉,但是很容易使用 C API 参考作为参考来找出 Vala API。

【讨论】:

嗯,这肯定有帮助,所以我倾向于接受它作为答案。我会试试看,等我搞清楚API就接受了。 实际上我发现,对于我的实际程序,这将是一个矫枉过正,但我​​感谢帮助。顺便说一句,我只是在异步进程中调用 pkexec。 对上一个的更新,其实pkexec不能异步调用,所以在后台线程中同步调用。

以上是关于Vala 和 PolicyKit的主要内容,如果未能解决你的问题,请参考以下文章

用于 pidgin 插件的 Vala

如何在 Vala 中导入其他文件?

Vala 可以在没有 GObject 的情况下使用吗?

Vala 和 Genie 的生产准备好了吗? [关闭]

在 GIO 中,为啥这些异步文件 IO 操作永远不会完成? (适用于 C 和 Vala)

我可以在 Vala 为 iPhone 编码吗?