少智多愚 2025-03-26 14:42 采纳率: 0%
浏览 4

dbus远程调用认证失败

我在windows上下载了dbus的源码编译并安装、添加环境变量;通过cmd命令dbus-daemon --session --address=tcp:host=127.0.0.1,port=12345启动dbus守护进程dbus-daemon.exe;然后启动注册服务的进程A,A进程使用了qt5的qdbus模块;启动A后用qdbusviewer.exe工具可以查看到sesseion bus里A注册的服务接口,并能通过qdbusviewer.exe工具远程调用A的注册接口给A的注册接口传递数据信息。我用ts开发了前端工具B,B使用dbus远程调用A的注册接口并给其传递数据,B报错:DBUS is connected to address tcp:host=127.0.0.1,port=12345...UncaughtError occurred: write ECONNABORTED,开启dbus-daemon.exe的日志打印,发现有记录:Client authorized as SID '' but our SID is 'S-1-5-21-2711201992-545670683-2969569414-500', disconnecting,原来是认证失败导致的了断开连接。
我的问题是:
1、qdbuviewer.exe工具远程调用正常,ts前端工具远程调用却异常,能说明我的dbus-daemon.exe配置没有问题吧?
2、为什么ts工具远程调用会认证失败,而qdbusviewer.exe远程调用认证通过,都是windows环境,我哪里用错了吗?

求各位指引,不胜感激!

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-03-26 14:42
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    dbus远程调用认证失败

    你遇到了dbus远程调用认证失败的问题。 dbus是一个分布式计算系统,它使用消息传递机制来实现进程间的通信。下面是一些可能解决这个问题的方法:

    1. 检查dbus-daemon的日志:你可以使用dbus-daemon --session --address=tcp:host=127.0.0.1,port=1234 --print命令来查看dbus-daemon的日志,了解可能的错误信息。
    2. 检查dbus的认证机制:dbus使用了认证机制来确保远程调用是安全的。你可以检查dbus的配置文件(通常是~/.dbus/session.conf)中的认证设置,确保它们正确。
    3. 使用dbus的认证工具:dbus提供了一个认证工具dbus-uuidgen,可以用来生成一个唯一的UUID来使用在远程调用中。你可以使用这个工具来生成一个UUID,并将其添加到dbus的配置文件中。
    4. 检查Qt应用程序的dbus配置:如果你使用Qt开发了一个应用程序,并且使用dbus进行远程调用,那么你需要检查Qt应用程序的dbus配置,确保它们正确。

    以下是一个使用dbus-uuidgen生成UUID的示例代码:

    dbus-uuidgen --type=128
    

    这将生成一个128位的UUID,可以使用在dbus的配置文件中。

    如果你仍然遇到问题,可以提供更多的信息和错误信息,我将尽力帮助你解决这个问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月26日