Как настроить приложение для автоматического запуска от имени администратора?

8

Я создал файл патча с исполняемым файлом внутри него, используя функцию Winrar SFX.
После выполнения файла SFX и извлечения заканчивается, мой исполняемый файл никогда не будет работать, потому что он не имеет прав администратора. Мне интересно, КАК я могу предоставить администратору доступ к этому файлу каким-либо программным способом (например, командным файлом).

Я знаю, что могу щелкнуть по нему правой кнопкой мыши, перейти в «Свойства», выбрать вкладку «Совместимость» и установить флажок «Выполнить от имени администратора».

Проблема в том, что пользователи, которые будут загружать этот патч, не знают его (и мой exe запускается только тогда, когда вы щелкаете по нему правой кнопкой мыши и выбираете «Открыть как администратор», в противном случае он никогда не откроет и не отобразит всплывающее окно UAC).

Я пробовал несколько способов, таких как «Лифт бегун (поднять меня)» и т. Д., Но я на самом деле ищу что-то более простое, чем
Мне просто нужно, чтобы exe всегда запускался от имени администратора.

Rafael Vidal
источник
2
Примечание для модов: нет переход на SO требуется здесь.
Karan

Ответы:

14

Что вам нужно сделать, это вставить манифест приложения в EXE.

  1. Сохраните следующее как текстовый файл с именем App.exe.manifest :

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
                </requestedPrivileges>
            </security>
        </trustInfo>
    </assembly>
    
  2. Загрузите Windows SDK.

  3. Внутри вы найдете mt.exe то есть Инструмент манифеста , Вызовите это следующим образом:

    mt.exe -manifest "App.exe.manifest" -outputresource:"App.exe";#1
    
  4. Если нет ошибок, вы сделали. Вы можете удалить файл манифеста и распространять только EXE. При запуске он должен автоматически запрашивать доступ администратора каждый раз.

Источник

Karan
источник
Я проверю это. Кстати, можно ли сделать этот «Манифест» немного лучше? Как сделать это, выполнив от имени администратора, не запрашивая доступ администратора? Спасибо
Rafael Vidal
Это значит, что вы хотите, чтобы он незаметно поднялся и получил доступ администратора? Если вы не отключите UAC, это невозможно, иначе какой смысл в UAC, и не думаете ли вы, что все вредоносные программы будут делать это?
Karan
Я понимаю вашу точку зрения, но я знаю, что есть способы ... непросто наверняка, но есть, например, программа "Elevate Me" ... Во всяком случае, на данный момент достаточно запустить exe от имени администратора. Действительно заранее спасибо
Rafael Vidal
1
Все такие программы для обхода возвышения подсказывают использование общеизвестных Трюк планировщика заданий который требует административного доступа. Поскольку вы хотите сделать это на любом произвольном ПК, на котором выполняется ваш SFX, вы не можете создать запланированное задание без согласия обычного пользователя. На самом деле, если какая-либо программа сделает это на моем ПК (тихо создаст запланированное задание, чтобы обойти UAC), я бы немедленно классифицировать его как вредоносное ПО и удалить его.
Karan
Довольно хорошо, Каран, работал отлично. Я бы только предложил добавить к ответу необходимость запуска CMD в качестве ADMIN, иначе он не будет работать ... Еще раз спасибо
Rafael Vidal
2

При создании вашего архива, Запросить административный доступ , enter image description here

MDMoore313
источник
MDMoore313 спасибо за ваше время, но я не очень хорошо объяснил. Мне не нужно запускать SFX в качестве администратора. Мне нужно запустить конкретный файл с правами администратора («my_app.exe»), который находится внутри SFX-файла. Дело в том, что двойной щелчок по этому файлу не запустит его. Единственный способ запустить его - щелкнуть его правой кнопкой мыши и выбрать «Запуск от имени администратора».
Rafael Vidal
@RafaelVidal SFX запускает ваше приложение? Если это так, то ваше приложение будет иметь права администратора. Если нет, я обновлю свой ответ.
MDMoore313
Нет, приложение не запускается. Пользователь должен сделать это вручную, поэтому он может установить флажок «Запуск от имени администратора» на вкладке «Совместимость» или щелкнуть правой кнопкой мыши контекстное меню «Запуск от имени администратора».
Rafael Vidal
@RafaelVidal Есть ли причина, по которой вы не хотите, чтобы WinRAR запускал exe, и просто заставлял пользователя запускать сам SFX? похоже, что это позволит достичь той же цели и решить вашу проблему с администратором. Если вы по-прежнему сосредоточены на том, чтобы пометить вашу программу для запуска с правами администратора, у вас больше шансов получить ответ о переполнении стека (пометьте свой вопрос для миграции)
MDMoore313
SFX запускает файл, но пользователи могут позже запустить этот файл самостоятельно, и тогда не будет SFX, чтобы запустить его. Вот почему исполняемый файл должен быть помечен как «запустить от имени администратора»
Rafael Vidal