2013-02-23 73 views
3

我正在Vala中創建一個簡單的基於GTK +的應用程序,它應該能夠寫入系統目錄,因此它需要root訪問權限。我意識到完全root訪問是一個不好的主意,所以我需要一種獲得臨時權限的方法。Vala和PolicyKit

理論上,PolicyKit D-Bus服務是工作的工具,但我不知道如何使用它,更不用說在Vala代碼中。任何洞察力將不勝感激。

更新: 我已經做了一些進一步的挖掘。我的出發點是this。所以基本上我需要的是找出如何將這些解決方案調整到PolicyKit。爲此,有必要找到PolicyKit的D-Bus接口。我發現它here。 (奇怪的是我沒有在我的本地文件夾/usr/share/dbus-1/interfaces中找到它。)但是現在我不知道該如何繼續。

回答

2

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

而不是直接使用D-Bus接口,您應該考慮使用libpolkit-gobject-1庫。您可以直接使用GIR,或使用vapigen生成VAPI(我會推薦)。 Here是我剛剛生成的一個。我並不是很熟悉API,但使用C API參考作爲參考找出Vala API非常簡單。

+1

那麼這肯定有幫助,所以我傾向於接受它作爲答案。我會嘗試一下,一旦我找出API,我會接受它。 – meskobalazs 2013-02-25 07:23:51

+0

其實我發現,對於我的實際程序來說,這將是一個矯枉過正的問題,但我很感激幫助。順便說一下,我只是在異步過程中調用pkexec。 – meskobalazs 2013-02-27 14:28:04

+0

那麼更新前一個,實際上_pkexec_不能異步調用,所以它在後臺線程中被同步調用。 – meskobalazs 2013-02-27 21:50:54