Qt 5.2,Win 7
当我注册一个服务QDBusConnection::registerService (const QString & serviceName)
时,它失败了(“false”)系统 DBus 连接(QDBusConnection::systemBus ()
),但适用于 session 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()
方法不会自动连接(与 session 、对等方一样)吗?
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 的commet ----
我同意,也认为它与.conf
文件有关。
- 您提供的链接和上面我提供的链接都指向 to the same example 。我在那里尝试了
.conf
文件(当然,根据我的名字更改了服务名称) - 发现了另一个有趣的例子:https://wiki.ubuntu.com/DebuggingDBus。不幸的是没有成功
很难说问题是否与 Windows 相关,大多数示例显然是 Linux 驱动的。想知道“允许任何人使用任何东西”的最小 conf 是多少。
最佳答案
我在这个 link 找到了答案有帮助。
根据链接提供的答案,您需要在正在运行的操作系统上安装 dbus-launch(Ubuntu:sudo apt-get install dbus-x11)。
在终端上运行 dbus-launch 将启动 dbus session 总线,并且还将在终端上打印出这种性质的文本:
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-RKvgH2uzDI,guid=37cfdf614fe9c896cc8790160018b974
DBUS_SESSION_BUS_PID=18717
在运行需要 session 总线执行 IPC 的应用程序之前,您需要将终端打印的文本导出为环境变量。
希望这对您有所帮助。
关于c++ - 使用系统 DBus 的 registerService 失败(但适用于 session DBus),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023899/