2012-01-27 10 views
3

Qt CreatorでQt Dbusを使用してシステムバスにアプリケーションのメソッドを公開したいと思います。 セッションバスを使用している間にメソッドが公開されますが、システムバスでは私が登録したサービス名は表示されますが、その下に公開されるメソッドはありません(D-feetでチェックします) 私がやります ?あなたの設定ファイル(例:例-dbus.conf)を配置する必要がQtdbusを使用してシステムバス上のメソッドを公開する方法

+0

私はポリシーの問題を考える。 '/ etc/dbus-1/system.d'にconfファイルを追加しますか?私は同じ問題を抱えていましたが、私はconfigファイルを変更して解決しました。 –

答えて

1

/etc/dbus-1/system.d/

例-dbus.confファイルは次のようになります。

<!DOCTYPE busconfig PUBLIC 
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" 
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> 

<busconfig> 
    <!-- Only root user can own the service --> 
    <policy user="root"> 
    <allow own="com.company.qtdbus"/> 
    </policy> 

    <!-- Allow anyone to invoke methods on server, except SetHostName --> 
    <policy context="default"> 
    <allow send_destination="com.company.qtdbus"/> 
    <allow receive_sender="com.company.qtdbus"/> 

    <deny send_destination="com.company.qtdbus" 
      send_interface="com.company.qtdbus.Server" send_member="SetHostName"/> 
    </policy> 

    <!-- Allow everything, including access to SetHostName --> 
    <policy user="root"> 
    <allow send_destination="com.company.qtdbus"/> 
    <allow receive_sender="com.company.qtdbus"/> 
    </policy> 
</busconfig> 

を再起動してdbusのデーモン/etc/init.d/d-bus restartこれで、システムバスに接続することを許可する必要があります。実際に、システムバスに接続できない場合は、エラーメッセージが表示されます。

関連する問題