Рубрики
UAC (User Account Control)

UAC запуск программы без прав администратора \ подавлением запроса UAC

источник:

https://winitpro.ru/index.php/2018/06/28/zapusk-programmy-bez-prav-admina-i-zaprosa-uac/ - с картинками

из наблюдений:

!!! К счастью таких программ которые не запускаются от пользователя все меньше.
!!! В основном это программы просмотра видеорегистраторов \ камер \ банк клиенты \ спец софт работает с железом (датчики) \ не правильный дизайн
!!! программа хранит свои настройки не пойми где (например в корне системного диска, в неправильных ветках реестра) \ программа не подписана и т.д.
!!! Перед тем как дать админа проверь хотя бы автозагрузку и планировщик у пользователя (sysintrnals autoruns в помощь).... антивирус...
!!! Можно еще отключить UAC..... но лучше не надо :)
0.
Если приемлемо(программа проверена, доверяешь разработчику и т.д.), даешь временно пользователю права локального администратора,
устанавливаешь программу под пользователем, запускаешь ее (обычно на этом моменте, все что надо для работы программы создастся), 
проверяешь что все работает, отбираешь права у пользователя и проверяешь что все работает.  
1.
Если пользователю временно не льзя дать права админа то в помощь тебе придут программы processmonitor, 	SpyStudio, processhacker, и т.д.
Ставь программу где она заработает. Смотри куда она лезит. Очень часто достаточно дать права записи\чтения на куст из реестра или на какой то файл.

опций переменной __COMPAT_LAYER выделим следующие параметры:

RunAsInvoker — запуск приложения с привилегиями родительского процесса без запроса UAC.
RunAsHighest — запуск приложения с максимальными правами, доступными пользователю (запрос UAC появляется если у пользователя есть права администратора).
RunAsAdmin — запуск приложение с правами администратора (запрос AUC появляется всегда).

Вот так можно запустить из выполнить

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" "C:\Program Files\uvnc bvba\UltraVNC\vncviewer.exe"

Вот так можно из батника

Set ApplicationPath="C:\Program Files\MyApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

Вот так можно создать батник на который

0. Создать батник с_именем_каким_хотите.bat
1. Записать в него вот эту строку
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
2. Перетащить батник на приложение которое просит админ права
3. Приложение запустится с привилегиями родительского процесса без запроса UAC

Запуск приложения без админ прав по правой кнопке мыши

0. Создаем файл имя.reg
1. В него добовляем
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 __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""
2. Теперь у нас по ПКМ есть возможность запустить приложения с привилегиями родительского процесса без запроса UAC