如何使用 Qtdbus 在系统总线上公开方法

发布于 2024-12-29 12:52:20 字数 128 浏览 2 评论 0原文

我想使用 Qt Creator 中的 Qt Dbus 在系统总线上公开我的应用程序的方法。 使用会话总线时,方法会被公开,但使用系统总线时,我只能看到我注册的服务名称,但在其下没有公开的方法。(我在 D-feet 中检查它) 我应该怎么办 ?

I want to expose methods of my application on System bus using Qt Dbus in Qt Creator.
while using session bus ,the methods get exposed, but with system bus I am only able to see the Service name with which i registered but no methods to be exposed under it.(I am checking it in D-feet)
What should i do ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∞觅青森が 2025-01-05 12:52:20

您必须将配置文件(例如:example-dbus.conf)放在 /etc/dbus-1/system.d/

example-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>

使用 /etc/init.d/d-bus restart 重新启动 dbus 守护进程,现在应该允许您连接到系统总线。事实上,如果您不允许连接到系统总线,则会显示错误消息。

You have to place your config file (e.g: example-dbus.conf) in /etc/dbus-1/system.d/

The example-dbus.conf file looks like:

<!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>

Restart the dbus daemon with /etc/init.d/d-bus restart and now you should be allowed to connect to the system bus. In fact, if you not allowed to connect to the system bus, a error message will be shown.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文