使用系统DBus的registerService失败(但与会话DBus一起使用)

时间:2014-04-11 22:55:54

标签: c++ qt windows-7 dbus

Qt 5.2,Win 7

当我注册服务QDBusConnection::registerService ( const QString & serviceName )时,它使用系统 DBus连接(QDBusConnection::systemBus ())失败(“false”),但是使用会话DBus连接和同伴连接。

这就是我启动服务器的方式:dbus-daemon.exe --system --address=tcp:host=127.0.0.1,port=45000

截至QtService application cannot connect to system bus when running as a service我已尝试(see here)更改system.conf

<auth>ANONYMOUS</auth>
<allow_anonymous/>

我找到了另一个similar question here。我也尝试了那里描述的政策。

任何提示我如何克服这个问题,或者至少获得准确的错误信息?该方法的“错误”并没有真正帮助。

- 编辑---

下面的代码为我提供了连接的错误消息not connected to server。方法QDBusConnection::systemBus()是否不自动连接(与会话,对等方一样)?

            QDBusConnection con = QDBusConnection::systemBus();
            if (!con.registerService(ServiceName))
            {
                qCritical() << con.lastError().message();
                qFatal("Cannot register DBus service, server started? dbus-daemon.exe --system --address=tcp:host=192.168.0.133,port=45000");
            }

---编辑2,JB0x2D1的通讯----

我同意,也认为它与.conf文件有关。

  1. 您提供的链接以及我上面的链接都to the same example。我已经尝试了.conf文件(当然,相应地更改了服务名称)
  2. 找到另一个有趣的例子:https://wiki.ubuntu.com/DebuggingDBus。不幸的是没有成功
  3. 很难说,问题是否与Windows相关,大多数示例显然都是Linux驱动的。不知道,“让所有人都能得到”的最小配置是什么。

1 个答案:

答案 0 :(得分:1)

我发现此link的答案很有帮助。

根据链接提供的答案,您需要在正在运行的操作系统上安装dbus-launch(Ubuntu:sudo apt-get install dbus-x11)。

在终端上运行dbus-launch将启动dbus会话总线,还将在终端上打印出这种性质的文本:

DBUS_SESSION_BUS_ADDRESS = unix:abstract = / tmp / dbus-RKvgH2uzDI,guid = 37cfdf614fe9c896cc8790160018b974

DBUS_SESSION_BUS_PID = 18717

在运行需要会话总线执行IPC的应用程序之前,您需要将终端上打印的文本作为环境变量导出。

希望这会有所帮助。