2012-01-27 2 views
3

Qt Creator에서 Qt Dbus를 사용하여 시스템 버스에 내 응용 프로그램의 메서드를 표시하려고합니다. 세션 버스를 사용하는 동안 메서드가 노출되지만 시스템 버스를 통해 등록 된 서비스 이름 만 볼 수 있지만 그 아래에 노출 될 메서드는 없습니다. (D- 피트로 확인) 어떻게해야합니까? 나는한다 ?Qtdbus를 사용하여 시스템 버스에서 메서드를 노출하는 방법

+0

나는 정책상의 문제를 생각한다. '/ etc/dbus-1/system.d'에 conf 파일을 추가 하시겠습니까? 나는 같은 문제를 겪었고 설정 파일을 변경하여 해결했다. –

답변

1

당신은 설정 파일 배치해야한다 :에 (예를 들어, 예를-dbus.conf를) /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 이제 시스템 버스에 연결할 수 있어야합니다. 실제로 시스템 버스에 연결할 수 없으면 오류 메시지가 표시됩니다.

관련 문제