From: Ralf Habacker Date: Tue, 26 Sep 2017 10:06:10 +0000 (+0200) Subject: Add Windows manifest to dbus-update-activation-environment.exe X-Git-Tag: dbus-1.11.20~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=214fbc6dbfa3547e8cf250c1dd41f1990d98e823;p=thirdparty%2Fdbus.git Add Windows manifest to dbus-update-activation-environment.exe This explicitly sets the execution level to 'asInvoker', preventing Windows' UAC heuristics from deciding that because its name mentions "update", it probably needs to escalate privileges. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=102558 Reviewed-by: Simon McVittie --- diff --git a/cmake/tools/CMakeLists.txt b/cmake/tools/CMakeLists.txt index 8b3de0c99..5613269ea 100644 --- a/cmake/tools/CMakeLists.txt +++ b/cmake/tools/CMakeLists.txt @@ -62,6 +62,15 @@ add_executable(dbus-test-tool ${dbus_test_tool_SOURCES}) target_link_libraries(dbus-test-tool ${DBUS_LIBRARIES}) install(TARGETS dbus-test-tool ${INSTALL_TARGETS_DEFAULT_ARGS}) +if(WIN32) + # avoid dbus-update-activation-environment triggering UAC + # 1 is the resource ID, ID_MANIFEST + # 24 is the resource type, RT_MANIFEST + # constants are used because of a bug in windres + # see https://stackoverflow.com/questions/33000158/embed-manifest-file-to-require-administrator-execution-level-with-mingw32 + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/disable-uac.rc "1 24 \"${CMAKE_SOURCE_DIR}/../tools/Win32.Manifest\"\n") + list(APPEND dbus_update_activation_environment_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/disable-uac.rc) +endif() add_executable(dbus-update-activation-environment ${dbus_update_activation_environment_SOURCES}) target_link_libraries(dbus-update-activation-environment ${DBUS_LIBRARIES}) install(TARGETS dbus-update-activation-environment ${INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/tools/Makefile.am b/tools/Makefile.am index 19aaf3633..96ce03fa4 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -114,9 +114,22 @@ dbus_update_activation_environment_SOURCES = \ $(NULL) dbus_update_activation_environment_LDADD = $(top_builddir)/dbus/libdbus-1.la -EXTRA_DIST = run-with-tmp-session-bus.sh strtoll.c strtoull.c +if DBUS_WIN +SUFFIXES = .rc + +.rc.o: + $(WINDRES) $< -o $@ + +nodist_dbus_update_activation_environment_SOURCES = disable-uac.rc + +disable-uac.rc: Win32.Manifest + echo -e "1 24 \"$<\"" > $@ +endif + +EXTRA_DIST = run-with-tmp-session-bus.sh strtoll.c strtoull.c Win32.Manifest CLEANFILES = \ - run-with-tmp-session-bus.conf + run-with-tmp-session-bus.conf \ + $(nodist_dbus_update_activation_environment_SOURCES) # create the /var/lib/dbus directory for dbus-uuidgen install-data-local: diff --git a/tools/Win32.Manifest b/tools/Win32.Manifest new file mode 100644 index 000000000..b926d0665 --- /dev/null +++ b/tools/Win32.Manifest @@ -0,0 +1,10 @@ + + + + + + + + + +