Ich habe Qt mit integriertem dbus für Windows neu kompiliert.QtService-Anwendung kann keine Verbindung zum Systembus herstellen, wenn sie als Dienst ausgeführt wird
Ferner ich eine QtService
Anwendung implementiert haben, die einen Dienst und ein Objekt auf dem Systembus Register wie folgt:
QDBusConnection::systemBus().registerService("com.mycompany.Configuration");
QDBusConnection::systemBus().registerObject("/com/mycompany/Configuration/MySetting", myObject);
Nun, wenn ich die Dienstanwendung leite mit dem -e
Parameter (läuft als regelmäßige Anwendung) es funktioniert gut und sowohl dbus-monitor
als auch qdbus --system
zeigen Sie mir den registrierten Service und Objekt.
Wenn ich jedoch die Anwendung als Windows-Dienst ausführt, registriert es nichts am Systembus.
den Dienst Debuggen gibt mir die Fehlermeldung
verbunden Nicht zu D-Bus-Server
wenn registerService(...)
und registerObject(...)
aufrufen.
ich die Umgebungsvariablen gesetzt haben:
DBUS_SYSTEM_BUS_ADDRESS = autolaunch:
DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = autolaunch:
Meine system.conf Datei:
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<type>system</type>
<fork/>
<pidfile>/pid</pidfile>
<listen>autolaunch:</listen>
<policy context="default">
<allow user="*"/>
<deny own="*"/>
<deny send_type="method_call"/>
<allow send_type="signal"/>
<allow send_requested_reply="true" send_type="method_return"/>
<allow send_requested_reply="true" send_type="error"/>
<allow receive_type="method_call"/>
<allow receive_type="method_return"/>
<allow receive_type="error"/>
<allow receive_type="signal"/>
<allow send_destination="org.freedesktop.DBus"/>
<deny send_destination="org.freedesktop.DBus"
send_interface="org.freedesktop.DBus"
send_member="UpdateActivationEnvironment"/>
</policy>
<includedir>system.d</includedir>
<include ignore_missing="yes">system-local.conf</include>
<include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include>
</busconfig>
Zusätzlich habe ich eine com.mycompany.Configuration.conf
Datei im Ordner system.d:
<!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 can own the service -->
<policy context="default">
<allow own="com.mycompany.Configuration"/>
<allow send_interface="com.mycompany.Configuration"/>
<allow send_destination="com.mycompany.Configuration"/>
<allow receive_sender="com.mycompany.Configuration"/>
</policy>
</busconfig>
Der Windows-Dienst selbst heißt com.mycompany.Configuration und wird als Local Syst ausgeführt EM-Konto.
Außerdem dbus ausführliche Ausgabe zeigt, dass etwas auf, wenn mein Windows-Dienst wird gestartet wird:
[...]
1292: [dbus\dbus-connection.c(1154):_dbus_connection_release_io_path] locking io_path_mutex
1292: [dbus\dbus-connection.c(1160):_dbus_connection_release_io_path] start connection->io_path_acquired = 1
1292: [dbus\dbus-connection.c(1165):_dbus_connection_release_io_path] unlockingio_path_mutex
1292: [dbus\dbus-connection.c(1522):_dbus_connection_handle_watch] middle
1292: [dbus\dbus-connection.c(4222):_dbus_connection_get_dispatch_status_unlocked] dispatch status = complete is_connected = 1
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(1529):_dbus_connection_handle_watch] end
1292: [dbus\dbus-watch.c(696):dbus_watch_handle] After sanitization, watch flags on fd 1932 were 0
1292: [dbus\dbus-sysdeps-win.c(1110):_dbus_poll] select: to=7875
R:1944 E:1944
R:1936 E:1936
R:1932 E:1932
[dbus\dbus-sysdeps-win.c(1162):_dbus_poll] select: = 1:
R:1932
[dbus\dbus-connection.c(1503):_dbus_connection_handle_watch] start
1292: [dbus\dbus-connection.c(1505):_dbus_connection_handle_watch] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(1081):_dbus_connection_acquire_io_path] locking io_path_mutex
1292: [dbus\dbus-connection.c(1085):_dbus_connection_acquire_io_path] start connection->io_path_acquired = 0 timeout = 1
1292: [dbus\dbus-connection.c(1128):_dbus_connection_acquire_io_path] end connection->io_path_acquired = 1 we_acquired = 1
1292: [dbus\dbus-connection.c(1130):_dbus_connection_acquire_io_path] unlocking io_path_mutex
1292: [dbus\dbus-connection.c(1133):_dbus_connection_acquire_io_path] LOCK
1292: [dbus\dbus-transport-socket.c(919):socket_handle_watch] handling read watch 003d6f58 flags = 1
1292: [dbus\dbus-transport-socket.c(345):exchange_credentials] exchange_credentials: do_reading = 1, do_writing = 0
1292: [dbus\dbus-transport-socket.c(446):do_authentication] server auth state:waiting for input
1292: [dbus\dbus-sysdeps-win.c(207):_dbus_read_socket] recv: count=2048 fd=1932
1292: [dbus\dbus-sysdeps-win.c(217):_dbus_read_socket] recv: = 153
1292: [dbus\dbus-transport-socket.c(263):read_data_into_auth] read 153 bytes in auth phase
1292: [dbus\dbus-auth.c(2187):process_command] server: got command "DATA 30333432316532346364316236363730303938303934303836666364653631372063303064313764623036653935643732336665666330396131633131653265353030643632616237"
1292: [dbus\dbus-auth.c(1624):process_data] server: data: '03421e24cd1b6670098094086fcde617 c00d17db06e95d723fefc09a1c11e2e500d62ab7'
1292: [dbus\dbus-auth.c(2134):goto_state] server: going from state WaitingForData to state WaitingForBegin
1292: [dbus\dbus-auth.c(760):sha1_handle_second_client_response] server: authenticated client using DBUS_COOKIE_SHA1
1292: [dbus\dbus-transport-socket.c(345):exchange_credentials] exchange_credentials: do_reading = 1, do_writing = 0
1292: [dbus\dbus-transport-socket.c(460):do_authentication] server auth state:bytes to send
1292: [dbus\dbus-transport-socket.c(180):check_read_watch] fd = 1932
1292: [dbus\dbus-transport-socket.c(226):check_read_watch] setting read watch enabled = 0
1292: [dbus\dbus-watch.c(449):_dbus_watch_list_toggle_watch] Toggling watch 003d6f58 on fd 1932 to 0
1292: [dbus\dbus-transport-socket.c(165):check_write_watch] check_write_watch(): needed = 1 on connection 003d88b0 watch 003d7260 fd = 1932 outgoing messages exist 0
1292: [dbus\dbus-watch.c(449):_dbus_watch_list_toggle_watch] Toggling watch 003d7260 on fd 1932 to 1
1292: [dbus\dbus-transport-socket.c(703):do_reading] fd = 1932
1292: [dbus\dbus-connection.c(1154):_dbus_connection_release_io_path] locking io_path_mutex
1292: [dbus\dbus-connection.c(1160):_dbus_connection_release_io_path] start connection->io_path_acquired = 1
1292: [dbus\dbus-connection.c(1165):_dbus_connection_release_io_path] unlockingio_path_mutex
1292: [dbus\dbus-connection.c(1522):_dbus_connection_handle_watch] middle
1292: [dbus\dbus-connection.c(4222):_dbus_connection_get_dispatch_status_unlocked] dispatch status = complete is_connected = 1
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(1529):_dbus_connection_handle_watch] end
1292: [dbus\dbus-sysdeps-win.c(1110):_dbus_poll] select: to=5641
R:1944 E:1944
R:1936 E:1936
W:1932 E:1932
[dbus\dbus-sysdeps-win.c(1162):_dbus_poll] select: = 1:
W:1932
[dbus\dbus-connection.c(1503):_dbus_connection_handle_watch] start
1292: [dbus\dbus-connection.c(1505):_dbus_connection_handle_watch] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(1081):_dbus_connection_acquire_io_path] locking io_path_mutex
1292: [dbus\dbus-connection.c(1085):_dbus_connection_acquire_io_path] start connection->io_path_acquired = 0 timeout = 1
1292: [dbus\dbus-connection.c(1128):_dbus_connection_acquire_io_path] end connection->io_path_acquired = 1 we_acquired = 1
1292: [dbus\dbus-connection.c(1130):_dbus_connection_acquire_io_path] unlockingio_path_mutex
1292: [dbus\dbus-connection.c(1133):_dbus_connection_acquire_io_path] LOCK
1292: [dbus\dbus-transport-socket.c(948):socket_handle_watch] handling write watch, have_outgoing_messages = 0
1292: [dbus\dbus-transport-socket.c(345):exchange_credentials] exchange_credentials: do_reading = 0, do_writing = 1
1292: [dbus\dbus-transport-socket.c(460):do_authentication] server auth state:bytes to send
1292: [dbus\dbus-sysdeps-win.c(267):_dbus_write_socket] send: len=37 fd=1932
1292: [dbus\dbus-sysdeps-win.c(277):_dbus_write_socket] send: = 37
1292: [dbus\dbus-auth.c(2506):_dbus_auth_bytes_sent] server: Sent 37 bytes of: OK 4d63998db68399d8b48494595200cd61
1292: [dbus\dbus-transport-socket.c(345):exchange_credentials] exchange_credentials: do_reading = 0, do_writing = 1
1292: [dbus\dbus-transport-socket.c(446):do_authentication] server auth state:waiting for input
1292: [dbus\dbus-transport-socket.c(180):check_read_watch] fd = 1932
1292: [dbus\dbus-transport-socket.c(226):check_read_watch] setting read watchenabled = 1
1292: [dbus\dbus-watch.c(449):_dbus_watch_list_toggle_watch] Toggling watch 003d6f58 on fd 1932 to 1
1292: [dbus\dbus-transport-socket.c(165):check_write_watch] check_write_watch(): needed = 0 on connection 003d88b0 watch 003d7260 fd = 1932 outgoing messages exist 0
1292: [dbus\dbus-watch.c(449):_dbus_watch_list_toggle_watch] Toggling watch 003d7260 on fd 1932 to 0
1292: [dbus\dbus-transport-socket.c(503):do_writing] Not authenticated, not writing anything
1292: [dbus\dbus-transport-socket.c(165):check_write_watch] check_write_watch(): needed = 0 on connection 003d88b0 watch 003d7260 fd = 1932 outgoing messages exist 0
1292: [dbus\dbus-connection.c(1154):_dbus_connection_release_io_path] locking io_path_mutex
1292: [dbus\dbus-connection.c(1160):_dbus_connection_release_io_path] start connection->io_path_acquired = 1
1292: [dbus\dbus-connection.c(1165):_dbus_connection_release_io_path] unlockingio_path_mutex
1292: [dbus\dbus-connection.c(1522):_dbus_connection_handle_watch] middle
1292: [dbus\dbus-connection.c(4222):_dbus_connection_get_dispatch_status_unlocked] dispatch status = complete is_connected = 1
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(1529):_dbus_connection_handle_watch] end
1292: [dbus\dbus-watch.c(696):dbus_watch_handle] After sanitization, watch flags on fd 1932 were 0
1292: [dbus\dbus-sysdeps-win.c(1110):_dbus_poll] select: to=3484
R:1944 E:1944
R:1936 E:1936
R:1932 E:1932
[dbus\dbus-sysdeps-win.c(1162):_dbus_poll] select: = 1:
R:1932
[dbus\dbus-connection.c(1503):_dbus_connection_handle_watch] start
1292: [dbus\dbus-connection.c(1505):_dbus_connection_handle_watch] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(1081):_dbus_connection_acquire_io_path] locking io_path_mutex
1292: [dbus\dbus-connection.c(1085):_dbus_connection_acquire_io_path] start connection->io_path_acquired = 0 timeout = 1
1292: [dbus\dbus-connection.c(1128):_dbus_connection_acquire_io_path] end connection->io_path_acquired = 1 we_acquired = 1
1292: [dbus\dbus-connection.c(1130):_dbus_connection_acquire_io_path] unlockingio_path_mutex
1292: [dbus\dbus-connection.c(1133):_dbus_connection_acquire_io_path] LOCK
1292: [dbus\dbus-transport-socket.c(919):socket_handle_watch] handling read watch 003d6f58 flags = 1
1292: [dbus\dbus-transport-socket.c(345):exchange_credentials] exchange_credentials: do_reading = 1, do_writing = 0
1292: [dbus\dbus-transport-socket.c(446):do_authentication] server auth state:waiting for input
1292: [dbus\dbus-sysdeps-win.c(207):_dbus_read_socket] recv: count=2048 fd=1932
1292: [dbus\dbus-sysdeps-win.c(217):_dbus_read_socket] recv: = 135
1292: [dbus\dbus-transport-socket.c(263):read_data_into_auth] read 135 bytes in auth phase
1292: [dbus\dbus-auth.c(2187):process_command] server: got command "BEGIN"
1292: [dbus\dbus-auth.c(2134):goto_state] server: going from state WaitingForBegin to state Authenticated
1292: [dbus\dbus-sysdeps-win.c(787):_dbus_getsid] _dbus_getsid() returns 1
1292: [dbus\dbus-transport.c(673):auth_via_default_rules] Client authorized as S ID 'S-1-5-18' but our SID is 'S-1-5-21-4012214046-2405994403-1636280286-500', disconnecting
1292: [dbus\dbus-transport.c(503):_dbus_transport_disconnect] start
1292: [dbus\dbus-transport-socket.c(985):socket_disconnect]
1292: [dbus\dbus-transport-socket.c(76):free_watches] start
1292: [dbus\dbus-watch.c(417):_dbus_watch_list_remove_watch] Removing watch on fd 1932
1292: [dbus\dbus-watch.c(417):_dbus_watch_list_remove_watch] Removing watch on fd 1932
1292: [dbus\dbus-socket-set-poll.c(221):socket_set_poll_remove] after removing fd 1932 from 003d2430, 2 en/2 res/9 alloc
1292: [dbus\dbus-watch.c(628):dbus_watch_set_data] Setting watch fd -1 data to data = 00000000 function = 00000000 from data = 00000000 function = 00000000
1292: [dbus\dbus-transport-socket.c(98):free_watches] end
1292: [dbus\dbus-sysdeps-win.c(317):_dbus_close_socket] _dbus_close_socket: socket=1932,
1292: [dbus\dbus-transport.c(514):_dbus_transport_disconnect] end
1292: [dbus\dbus-transport-socket.c(180):check_read_watch] fd = -1
1292: [dbus\dbus-transport-socket.c(703):do_reading] fd = -1
1292: [dbus\dbus-watch.c(628):dbus_watch_set_data] Setting watch fd -1 data to data = 00000000 function = 00000000 from data = 00000000 function = 00000000
1292: [dbus\dbus-connection.c(1154):_dbus_connection_release_io_path] locking io_path_mutex
1292: [dbus\dbus-connection.c(1160):_dbus_connection_release_io_path] start connection->io_path_acquired = 1
1292: [dbus\dbus-connection.c(1165):_dbus_connection_release_io_path] unlockingio_path_mutex
1292: [dbus\dbus-connection.c(1522):_dbus_connection_handle_watch] middle
1292: [dbus\dbus-connection.c(4222):_dbus_connection_get_dispatch_status_unlocked] dispatch status = complete is_connected = 0
1292: [dbus\dbus-connection.c(4184):notify_disconnected_and_dispatch_complete_unlocked] Sending disconnect message
1292: [dbus\dbus-connection.c(567):_dbus_connection_queue_synthesized_message_link] Synthesized message 003d8948 added to incoming queue 003d88b0, 1 incoming
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(4299):_dbus_connection_update_dispatch_status_and_unlock] Notifying of change to dispatch status of 003d88b0 now 0 (data remains)
1292: [dbus\dbus-connection.c(1529):_dbus_connection_handle_watch] end
1292: [dbus\dbus-connection.c(4515):dbus_connection_dispatch]
1292: [dbus\dbus-connection.c(4517):dbus_connection_dispatch] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(4090):_dbus_connection_acquire_dispatch] locking dispatch_mutex
1292: [dbus\dbus-connection.c(4104):_dbus_connection_acquire_dispatch] unlocking dispatch_mutex
1292: [dbus\dbus-connection.c(4107):_dbus_connection_acquire_dispatch] LOCK
1292: [dbus\dbus-connection.c(3954):_dbus_connection_pop_message_link_unlocked]Message 003d8948 (signal /org/freedesktop/DBus/Local org.freedesktop.DBus.Local Disconnected '') removed from incoming queue 003d88b0, 0 incoming
1292: [dbus\dbus-connection.c(4563):dbus_connection_dispatch] dispatching message 003d8948 (signal org.freedesktop.DBus.Local Disconnected '')
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(4630):dbus_connection_dispatch] running filter on message 003d8948
1292: [dbus\dbus-connection.c(3126):dbus_connection_preallocate_send] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [bus\dispatch.c(216):bus_dispatch] DISPATCH: org.freedesktop.DBus.Local Disconnected (no error name) to peer
1292: [bus\connection.c(198):bus_connection_disconnected] (inactive) disconnected, dropping all service ownership and releasing
1292: [dbus\dbus-connection.c(5526):dbus_connection_remove_filter] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(4891):dbus_connection_set_watch_functions] LOCK
1292: [dbus\dbus-watch.c(347):_dbus_watch_list_set_functions] Removing all pre-existing watches
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(4954):dbus_connection_set_timeout_functions] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(5268):dbus_connection_set_unix_user_function] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(5367):dbus_connection_set_windows_user_function] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(5037):dbus_connection_set_dispatch_status_function] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [bus\connection.c(1587):bus_connection_drop_pending_replies] Dropping pending replies that involve connection 003d88b0
1292: [dbus\dbus-connection.c(4644):dbus_connection_dispatch] LOCK
1292: [dbus\dbus-connection.c(4653):dbus_connection_dispatch] filter handled message in dispatch
1292: [dbus\dbus-connection.c(4784):dbus_connection_dispatch] ... done dispatching
1292: [dbus\dbus-connection.c(4123):_dbus_connection_release_dispatch] locking dispatch_mutex
1292: [dbus\dbus-connection.c(4131):_dbus_connection_release_dispatch] unlocking dispatch_mutex
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(4801):dbus_connection_dispatch] LOCK
1292: [dbus\dbus-connection.c(4807):dbus_connection_dispatch] before final status update
1292: [dbus\dbus-connection.c(4222):_dbus_connection_get_dispatch_status_unlocked] dispatch status = complete is_connected = 0
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(2670):_dbus_connection_last_unref] Finalizing connection 003d88b0
1292: [dbus\dbus-connection.c(5037):dbus_connection_set_dispatch_status_function] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(4991):dbus_connection_set_wakeup_main_function] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-connection.c(5268):dbus_connection_set_unix_user_function] LOCK
1292: [dbus\dbus-connection.c(413):_dbus_connection_unlock] UNLOCK
1292: [dbus\dbus-transport.c(484):_dbus_transport_unref] finalizing
1292: [dbus\dbus-transport-socket.c(106):socket_finalize]
1292: [dbus\dbus-transport-socket.c(76):free_watches] start
1292: [dbus\dbus-transport-socket.c(98):free_watches] end
1292: [dbus\dbus-auth.c(430):shutdown_mech] server: Shutting down mechanism DBUS_COOKIE_SHA1
1292: [dbus\dbus-sysdeps-win.c(1110):_dbus_poll] select: to=0
R:1944 E:1944
R:1936 E:1936
[dbus\dbus-sysdeps-win.c(1140):_dbus_poll] select: = 0
1292: [bus\connection.c(828):expire_incomplete_timeout] Running
1292: [bus\expirelist.c(111):bus_expire_timeout_set_interval] Disabled an expire timeout
1292: [dbus\dbus-sysdeps-win.c(1110):_dbus_poll] select: to=-1
R:1944 E:1944
R:1936 E:1936
[...]
Ich weiß wirklich nicht, was das Problem sein könnte und jede mögliche Hilfe schätzen würde.
Edit: Dies scheint das gleiche Problem zu haben: http://comments.gmane.org/gmane.comp.freedesktop.dbus/14895