Як примусово закрити програму на Windows
У створенні цієї статті брала участь наша досвідчена команда редакторів та дослідників, які перевірили її на точність та повноту.
Команда контент-менеджерів wikiHow ретельно слідкує за роботою редакторів, щоб гарантувати відповідність кожної статті нашим високим стандартам якості.
Кількість переглядів цієї статті: 156 391.
З цієї статті ви дізнаєтесь, як примусово закрити програму, яка перестала відповідати. Для цього ми скористаємося Диспетчером завдань.
Натисніть вкладку Процеси у верхньому лівому куті вікна Менеджер завдань.
Виберіть із списку програму, яка перестала відповідати. Натисніть назву проблемної програми. У Windows 10 і 8 ця програма буде під заголовком «Програми».
- Якщо програма не закриється, натисніть її назву правою кнопкою миші. Виберіть опцію Детально (або Перейти до процесу у більш старих версіях Windows) та завершіть процес цієї програми.
Додаткові статті
Про цю статтю
У створенні цієї статті брала участь наша досвідчена команда редакторів та дослідників, які перевірили її на точність та повноту.
Команда контент-менеджерів wikiHow ретельно слідкує за роботою редакторів, щоб гарантувати відповідність кожної статті нашим високим стандартам якості. Кількість переглядів цієї статті: 156 391.
Запуск програми без прав адміністратора та придушення запиту UAC
Деякі програми при запуску можуть вимагати підвищення прав до адміністратора (значок щита біля іконки), проте насправді для їх нормальної роботи права адміністратора не потрібно (наприклад, ви можете вручну надати необхідні NTFS дозволи користувачам на каталог програми Program Files та її гілки реєстру ).Якщо на комп'ютері включено контроль облікових записів (User Account Control), під час запуску такої програми з-під непривілейованого користувача з'явиться запит UAC і Windows вимагатиме від користувача ввести пароль адміністратора. Щоб обійти цей механізм багато хто просто відключає UAC або надає користувачеві права адміністратора на комп'ютері, додаючи його до групи локальних адміністраторів. Обидва ці способи не рекомендується широко використовувати, т.к. ви знижуєте безпеку та захист Windows. У цій статті ми розглянемо, як запустити програму, яка вимагає права адміністратора, від імені простого користувача та придушити запит на підвищення привілеїв UAC.
Надати користувачеві права на запуск програми
Програма може вимагати права адміністратора під час запуску, якщо:
- Програмі потрібно отримати доступ на системний каталог або файл, на які відсутні NTFS дозволи для непривілейованих користувачів;
- Якщо програма зібрана зі спеціальним прапором, який вимагає підвищення прав під час запуску (requireAdministrator).
У першому випадку для вирішення проблеми адміністратору достатньо надати RW або Full Control дозволи на каталог програми або необхідний системний каталог. Наприклад, програма зберігає свої файли (логи, файли конфігурації і т.д.) у власній папці в C: Program Files (x86) SomeApp) або якомусь системному каталозі. Для коректної роботи програми користувачеві потрібні права запису цих файлів. За замовчуванням у користувачів немає прав на редагування даного каталогу, відповідно для нормальної роботи такої програми потрібні права адміністратора.
Щоб дозволити запуск програми під непривілейованим користувачем адміністратора, достатньо вручну надати користувачеві (або вбудованій групі Users) права на зміну/запис на файл/каталог на рівні файлової системи NTFS.
Щоб знайти список файлів, папок та ключів реєстру, до яких звертається програма, скористайтесь утилітою Process Monitor (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon). Увімкніть фільтр на ім'я процесу програми та знайдіть усі ресурси, при доступі до яких з'являється Access Denied. Надайте необхідні права на папки/файли/гілки реєстру.
Примітка. У рекомендаціях Microsoft для розробників зазначено, що не рекомендується зберігати програми, що змінюються, у каталозі C:\Program Files неправильна. Правильніше зберігати дані програми у профілі користувача. Але це вже питання про лінощі та некомпетентність розробників програм.
Запуск програми, яка потребує права адміністратора, від звичайного користувача
Раніше ми вже описували, як можна за допомогою RunAsInvoker відключити запит UAC для конкретної програми. Однак цей метод недостатньо гнучкий.
Розглянемо простіший спосіб примусового запуску будь-якої програми без прав адміністратора (і без введення пароля адміну) при включеному UAC (4,3 або 2 рівень повзунка UAC).
Наприклад візьмемо утиліту редагування реєстру — regedit.exe (Вона знаходиться в каталозі C: \ Windows \). Зверніть увагу на щит UAC біля іконки. Цей значок означає, що для запуску цієї програми буде запрошено підвищення привілеїв через UAC.
Якщо запустити regedit.exe , то перед вами з'явиться вікно User Account Contol із запитом пароля користувача з правами адміністратора на цьому комп'ютері ( ).Якщо не вказати пароль і не підтвердити підвищення привілею, програма не запуститься.
Спробуємо обійти запит UAC для цієї програми. Створіть на робочому столі файл run-as-non-admin.bat з наступним текстом:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
Тепер для примусового запуску програми без прав адміністратора та придушення запиту UAC, просто перетягніть потрібний exe файл на цей bat файл на робочому столі.
Редактор реєстру повинен запуститись без появи запиту UAC і без введення пароля адміністратора. Відкрийте диспетчер процесів, додайте стовпець Elevated і переконайтеся, що у Windows запущено непривілейований процес regedit (запущено з правами користувача).
Спробуйте відредагувати будь-який параметр у гілці HKEY_LOCAL_MACHINE. Як ви бачите доступ на редагування реєстру в цій гілці заборонено (у даного користувача немає прав на запис до системних гілок реєстру). Але ви можете додавати та редагувати ключі у власній гілці реєстру користувача – HKEY_CURRENT_USER.
Аналогічним чином через bat файл можна запускати і конкретну програму, достатньо вказати шлях до файлу, що виконується.
run-app-as-non-admin.bat
Set ApplicationPath="C:\Program Files\MyApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"
Також можна додати контекстне меню, яке додає у всіх програм можливість запуску без підвищення прав. Для цього створіть файл runasuser.reg файл, скопіюйте в нього наступний код, збережіть та імпортуйте його в реєстр подвійним клацанням по reg файлу (потрібні права адміністратора).
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker] @="Run as user without UAC elevation" [HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command] @="cmd /min /C \"SET start \"\" "%1""
Цей пункт меню можна розповсюдити на комп'ютери в домені через імпорт гілки реєстру за допомогою групової політики.
Після цього для запуску будь-якої програми без прав адміна достатньо вибрати пункт “Run as user without UAC elevation” у контекстному меню провідника Windows File Explorer.
Ще раз нагадаю, що використання програми в режимі RUNASINVOKER не запускає програму з правами адміністратора. Параметр AsInvoker пригнічує запит UAC і вказує програмі, що вона має запуститися з правами поточного користувача та не вимагати підвищення привілеїв. Якщо програма дійсно потребує підвищених прав для редагування системних параметрів або файлів, вона не буде працювати або повторно запитає права адміністратора.
Запуск програми в режимі RunAsInvoker з командного рядка
Змінна оточення __COMPAT_LAYER дозволяє встановлювати різні рівні сумісності додатків (вкладка Сумісність у властивостях exe файлу). За допомогою цієї змінної можна вказати налаштування сумісності, з якими потрібно запускати програму. Наприклад, щоб запустити програму в режимі сумісності з Windows 7 і роздільною здатністю 640×480, встановіть:
set __COMPAT_LAYER=Win7RTM 640x480
З цікавих опцій змінної __COMPAT_LAYER можна виділити наступні параметри:
- RunAsInvoker - Запуск програми з привілеями батьківського процесу без запиту UAC;
- RunAsHighest — запуск програми з максимальними правами, доступними користувачеві (запит UAC з'являється, якщо користувач має права адміністратора);
- RunAsAdmin — запустити програму з правами адміністратора (запит AUC з'являється завжди).
Наступні команди включають режим RUNASINVOKER для поточного процесу та запускає вказану програму:
start "" "C:\Program Files\MyApp\testapp.exe"
Увімкнути режим RunAsInvoker у маніфесті exe файлу програми
Як ми вже говорили вище, Windows показує піктограму щита UAC у програм, які вимагають підвищених привілеїв для запуску. Цю вимогу розробники задають під час розробки у спеціальній секції програми — маніфесті.
Ви можете відредагувати маніфест виконуваного exe файлу програми та вимкнути вимогу запускати програму у привілейованому режимі.
Для редагування маніфесту програми можна використовувати безкоштовну утиліту Resource Hacker. Відкрийте виконуваний файл програми у Resource Hacker.
У цьому прикладі я керуватиму маніфест утиліти Sysinternals Autologon.exe, яку можна використовувати для автоматичного входу в Windows без пароля.
У дереві ліворуч перейдіть до розділу Manifest та відкрийте маніфест програми. Зверніть увагу на рядки:
Саме завдяки опції requireAdministrator Windows завжди запускає програму з правами адміністратора.
Змініть requireAdministrator на asInvoker та збережіть зміни в exe файлі.
Зверніть увагу, що тепер у іконки програми пропав щит UAC і ви можете запустити її без запиту прав адміністратора з привілеями поточного користувача.
Якщо файл програми підписаний цифровий підпис (сертифікатом Code Signing), то після модифікації exe файлу, він може перестати запускатися або видавати попередження.
У цьому випадку можна змусити програму використати зовнішній файл маніфесту. Створіть у каталозі з його файлом текстовий файл app.exe.manifest (наприклад Autologon.exe.manifest) і скопіюйте код маніфесту з Resource Hacker.Змініть потрібнийадміністратор якInvoker. Збережіть файл.
Щоб Windows під час запуску програм завжди намагалася використовувати зовнішній файл маніфесту, увімкніть спеціальний параметр реєстру:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f
Перезавантажте Windows і переконайтеся, що програма використовує зовнішній файл маніфесту, і запускається без прав адміністратора.
Запуск програми зі збереженим паролем адміністратора
Якщо способи запуску програми через режим RunAsInvoker не працюють для вашої застарілої програми, можна спробувати запускати такі програми в сесії користувача за допомогою збереженого пароля адміністратора. Цей метод ми цілеспрямовано залишили останнім, т.к. це найменш безпечний спосіб запуску програм без надання прав локального адміністратора користувачеві.
Створіть на робочому столі новий ярлик для запуску програми. Вкажіть ім'я комп'ютера, ім'я локального адміністратора та повний шлях до файлу програми, що виконується.
runas /user:wks-1122h2\root /savecred "C:\CorpApp\myapp.exe"
Запустіть ярлик під користувачем. При першому запуску відкриється командний рядок, у якому потрібно буде вказати пароль адміністратора.
Утиліта RunAs під час запуску з параметром /SAVECRED зберігає ім'я користувача та пароль у диспетчері паролів Windows (Credentials Manager).
При наступному запуску ярлика утиліта runas автоматично отримає збережений пароль із Credentials Manager і використовує його для запуску програми від імені зазначеного локального адміністратора (пароль не запитується повторно при кожному запуску).
Ви можете вивести список користувачів зі збереженими паролями в Credential Manager за допомогою команди:
У Windows 11 при запуску такого ярлика з'являється помилка:
RUNAS ERROR: Завжди керувати - C:\CorpApp\myapp.exe 740: Захищена функція потребує elevation.
Щоб виправити помилку, відредагуйте команду у властивостях ярлика.
C:\Windows\System32\runas /profile /user:WKS-1122H2\root /savecred "cmd.exe /C C:\CorpApp\myapp.exe"
Як ми вказували вище, використання параметра /savecred не безпечно, тому що користувач, у профілі збережений чужий пароль може використовувати його для запуску будь-який програми або команди під даними привілеями, або навіть змінити пароль користувача з правами адміністратора. Крім того, збережені паролі з Credential Manager можна отримати у відкритому вигляді за допомогою утиліт типу Mimikatz, краще
У Windows можна заблокувати можливість збереження паролів у Credential Manager за допомогою групової політики Network access: Do not allow storage passwords and credentials for network authentication (Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options).
Подолати нестачу використання збереженого пароля через runas дозволяють кілька сторонніх утиліт. AdmiLink, RunAsRob, RunAsSpcЦі програми дозволяють зберегти пароль адміністратора у зашифрованому вигляді та безпечно запустити програму з правами адміністратора.