U
Ulkiorra199210 февраля 2018 г. 8:49

Запуск приложения от имени администратора

Добрый день, написал я инсталлятор с помощью QWizard, возник вопрос как сделать что бы при запуске моего инсталлятора Window 7 запрашивала запуск от имени администратора, если запустить просто то программа отработает не корректно. и Qt 4 к сожалению.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

5
Evgenii Legotckoi
  • 11 февраля 2018 г. 9:19
Добрый день!
Ну вообще-то запуск приложения с правами администратора - это операционной системы, а не самого приложения.
Насколько знаю, есть возможность запросить права администратора у инсталляторов, сделанных с помощью Qt installer framework (QtIFW) и я такое реализовывал на прошлой работе. Нужно поднимать старые исходники.

Есть также возможность что-то выполнить с правами администратора с помощью QProcess или некоторого платформозависимого функционала.
Вот здесь , например, есть получение прав суперпользователя для Linux.

Для Windows я не знаю, но полагаю, что есть примерно аналогичные варианты с WinAPI.

А вообще, у вас нет желания всё-таки посмотреть в сторону QtIFW? там достаточно много полезного функционала реализовано.
    U
    • 11 февраля 2018 г. 9:22

    так я уже написал инсталлятор, просто не все инструкцию читают, где написано запуск приложения от имени администратора.

      Evgenii Legotckoi
      • 11 февраля 2018 г. 9:29

      Понятно.

      А знаете, можно попробовать проверять, запущена ли программа от администратора, и если нет, то выкидывать сообщения, что программу нужно запустить с правами администратора.

      Вот мне такой код попадался для такой проверки из под WinAPI
      BOOL IsAppRunningAsAdminMode()
      {
          BOOL fIsRunAsAdmin = FALSE;
          DWORD dwError = ERROR_SUCCESS;
          PSID pAdministratorsGroup = NULL;
       
          // Allocate and initialize a SID of the administrators group.
       
          SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
          if (!AllocateAndInitializeSid(
              &NtAuthority, 
              2, 
              SECURITY_BUILTIN_DOMAIN_RID, 
              DOMAIN_ALIAS_RID_ADMINS, 
              0, 0, 0, 0, 0, 0, 
              &pAdministratorsGroup))
          {
              dwError = GetLastError();
              goto Cleanup;
          }
       
          // Determine whether the SID of administrators group is enabled in 
       
          // the primary access token of the process.
       
          if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
          {
              dwError = GetLastError();
              goto Cleanup;
          }
       
      Cleanup:
          // Centralized cleanup for all allocated resources.
       
          if (pAdministratorsGroup)
          {
              FreeSid(pAdministratorsGroup);
              pAdministratorsGroup = NULL;
          }
       
          // Throw the error if something failed in the function.
       
          if (ERROR_SUCCESS != dwError)
          {
              throw dwError;
          }
       
          return fIsRunAsAdmin; }
        Evgenii Legotckoi
        • 11 февраля 2018 г. 9:33
        • (ред.)

        Как бы повышения прав и привилегий программы - это весьма проблематичное занятие. И инсталляторы получают так сказать такие права за счёт того, что запускают сторонние процессы с запросом прав администратора, а сами при этом свои права не повышают, поскольку для этого нужно заново запускать инсталлятор сразу с правами администратора.

          U
          • 11 февраля 2018 г. 9:33

          спасибо, ничего не понятно конечно, но это наверно потому что я уже весь день программирую, и ничего уже соображаю

            Комментарии

            Только авторизованные пользователи могут публиковать комментарии.
            Пожалуйста, авторизуйтесь или зарегистрируйтесь
            г
            • ги
            • 23 апреля 2024 г. 15:51

            C++ - Тест 005. Структуры и Классы

            • Результат:41баллов,
            • Очки рейтинга-8
            l
            • laei
            • 23 апреля 2024 г. 9:19

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:10баллов,
            • Очки рейтинга-10
            l
            • laei
            • 23 апреля 2024 г. 9:17

            C++ - Тест 003. Условия и циклы

            • Результат:50баллов,
            • Очки рейтинга-4
            Последние комментарии
            k
            kmssr8 февраля 2024 г. 18:43
            Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
            АК
            Анатолий Кононенко5 февраля 2024 г. 1:50
            Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
            EVA
            EVA25 декабря 2023 г. 10:30
            Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
            J
            JonnyJo25 декабря 2023 г. 8:38
            Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
            G
            Gvozdik18 декабря 2023 г. 21:01
            Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
            Сейчас обсуждают на форуме
            G
            Gar22 апреля 2024 г. 5:46
            Clipboard Как скопировать окно целиком в clipb?
            DA
            Dr Gangil Academics20 апреля 2024 г. 7:45
            Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
            a
            a_vlasov14 апреля 2024 г. 6:41
            Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
            Павел Дорофеев
            Павел Дорофеев14 апреля 2024 г. 2:35
            QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь
            f
            fastrex4 апреля 2024 г. 4:47
            Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…

            Следите за нами в социальных сетях