Як налаштувати свою програму для автоматичного запуску адміністратора?


9

Я створив файл виправлення з виконуваним всередині нього за допомогою функції Winrar SFX.
Після виконання файлу SFX і закінчення вилучення мій виконуваний файл ніколи не запускається, оскільки він не має прав адміністратора. Мені цікаво, ЯК Я можу надати адміністратору доступ до цього файлу якимось чином програмуванням (наприклад, пакетним файлом).

Я знаю, що я можу клацнути правою кнопкою миші, перейдіть до "Властивості", виберіть вкладку "Сумісність" і поставте галочку "Виконати як адміністратор".

Проблема полягає в тому, що користувачі, які завантажують цей патч, цього не знають (а мій exe працює лише тоді, коли ви клацніть правою кнопкою миші та виберіть "Відкрити як адміністратор", інакше він ніколи не відкриється і не відображатиметься спливаюче вікно UAC).

Я спробував деякі способи, як, наприклад, "Підйомник ліфтів (підніміть мене)" тощо, але я насправді шукаю щось простіше, ніж.
Мені просто потрібно, щоб EXE завжди працював як адміністратор.


2
Примітка для модників: Тут не потрібна міграція до SO .
Каран

Відповіді:


15

Що потрібно зробити, це вбудувати маніфест програми в 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. Завантажте SDK для Windows.

  3. Всередині ви знайдете mt.exe, тобто інструмент Manifest . Викликайте це так:

    mt.exe -manifest "App.exe.manifest" -outputresource:"App.exe";#1
    
  4. Якщо немає помилок, ви закінчили. Ви можете видалити файл маніфесту та поширити лише EXE. Запустивши його, він повинен змусити кожного разу автоматично запитувати доступ адміністратора.

Джерело


Я тестую це. До речі, чи можна зробити цей «Маніфест» трохи кращим? Як, як це виконувати як адміністратор, не вимагаючи доступу адміністратора? Спасибі
Рафаель Відал

Значить, ви хочете, щоб він мовчки піднімався та отримував доступ адміністратора? Якщо ви не вимкнете UAC, це неможливо, інакше в чому полягатиме сенс UAC, і ви не думаєте, що кожна зловмисна програма буде робити це?
Каран

Я розумію вашу думку, але я знаю, що існують способи ... нелегко напевно, але є, як і програма "Elevate Me" ... Так чи інакше, зробити так, щоб exe запустився як адміністратор, поки що достатньо. Дуже дякую заздалегідь
Рафаель Відал

1
Усі такі програми для обходу запиту висоти використовують відомий трюк планувальника завдань, який вимагає доступу адміністратора. Оскільки ви хочете зробити це на будь-якому довільному ПК, на якому виконується ваш SFX, ви не можете безшумно створити заплановану задачу без стандартної згоди користувача. Насправді, якби якась програма зробила це на моєму ПК (мовчки створила заплановане завдання для обходу UAC), я моментально класифікував би це як шкідливе програмне забезпечення та видаляв би його.
Каран

Досить гарний Каран, працював чудово. Я б тільки запропонував вам додати до відповіді необхідність запуску CMD як ADMIN, інакше це не вийде ... Дякую ще раз
Рафаель Відал

2

Створюючи свій архів, запитайте адміністративний доступ .введіть тут опис зображення


MDMoore313 дякую за ваш час, але, мабуть, я не пояснив себе добре. Мені не потрібно запускати SFX як адміністратор. Мені потрібно запустити певний файл як адміністратор ("my_app.exe"), який знаходиться всередині файлу SFX. Справа в тому, що подвійне клацання цього файлу не змусить його запуститися. Єдиний спосіб запустити його - клацнути правою кнопкою миші та вибрати "Запустити як адміністратор"
Рафаель Відал

@RafaelVidal запускає вашу програму SFX? Якщо так, то ваш додаток матиме права адміністратора. Якщо ні, я оновлю свою відповідь.
MDMoore313

Ні, програма не запускає програму. Користувач повинен зробити це вручну, щоб він міг поставити галочку "Запустити як адміністратор" на вкладці "Сумісність" або натиснути правою кнопкою миші контекстне меню "Запустити як адміністратор"
Рафаель Відаль

@RafaelVidal Чи є причина, що ви не хочете, щоб WinRAR запускав exe, а користувач просто запустив SFX? здається, що це дозволить досягти тієї самої мети і вирішити проблему вашого адміністратора. Якщо ви все ще зосереджені на позначенні вашої програми для запуску адміністратором, у вас є більше шансів на відповідь щодо переповнення стека (позначте своє запитання про міграцію)
MDMoore313

SFX дійсно запускає файл, але користувачі можуть запустити цей файл пізніше і тоді SFX не буде запускати його. Ось чому exe потрібно позначити як "run as admin"
Рафаель Відал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.