Показать полную графическую версию : [решено] Запуск программ с включенным UAC без повышения прав
Есть программа которая на требует админских прав, и прекрасно работала еще на XP. Когда я её запускаю на Windows 7 включается UAC и запускает её с правами администратора (что мне совершенно не нужно). При выключеном UAC программа без проблем работает с правами обычного пользователя.
Как не отключая UAC заставить её работать от имени пользователя, а не админа?
обычного пользователя »обычного или опытного? - "Опытный пользователь" в XP - фактически обладает правами Администратора.
Обычный пользователь (который самый бесправный :)
Petya V4sechkin
18-07-2009, 22:06
ebaboon, можно в разделе реестра
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
создать параметр: полный_путь_к_программе.exe = RUNASINVOKER
RunAsInvoker означает, что приложение будет выполняться с теми же привилегиями и правами, что и родительский процесс (без запроса UAC).
Или воспользоваться статьей:
How to disable the User Account Control Prompt for a certain application only (http://blog.tiensivu.com/aaron/archives/1426-How-to-disable-the-User-Account-Control-Prompt-for-a-certain-application-only.html)
"Опытный пользователь" в XP - фактически обладает правами Администратора.
"Опытный пользователь" в XP не может устанавливать службы/драйверы, к примеру (и еще много чего). Потому что нет соответствующих привилегий и разрешений.
"Опытный пользователь" в XP не может устанавливать службы/драйверы, к примеру »
Microsoft говорит, что может... By default, the rights and permissions that are granted to the Power Users group include those rights and permissions that are required to allow members of the Power Users group to modify computer-wide settings, to install drivers, and to run (or install) non-certified programs.
A member of the Power Users group may be able to gain administrator rights and permissions in Windows Server 2003, Windows 2000, or Windows XP (http://support.microsoft.com/kb/825069)
Но это совершенно неважно в контексте Vista/7, ибо группы уже нет.
Petya V4sechkin
18-07-2009, 23:41
Microsoft говорит, что может...
Нет разрешений на запись в раздел HKLM\SYSTEM
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
создать параметр: полный_путь_к_программе.exe = RUNASINVOKER »
Спасибо, то, что доктор прописал. Вопрос закрыт.
myhouse_1991
06-01-2011, 13:08
Кстати, а можно сделать так, чтобы была возможность запустить любую программу с правами ограниченного пользователя, не взирая на то, что по этому поводу думает UAC? Каждый добавлять править реестр считаю неудобным занятием. Пробовал в Process Explorer использовать Run As Limited User - не работает, получаю Access Denied со следующими пояснениями "Процесс требует повышение прав".
myhouse_1991, если вы конкретизируете задачу, будет проще понять, зачем вам это нужно... Можно отклонять все запросы http://www.oszone.net/11424/uac_windows7_2#005
myhouse_1991
06-01-2011, 21:41
если вы конкретизируете задачу, будет проще понять, зачем вам это нужно...
Запускать недоверенное ПО с заниженными привилегиями.
myhouse_1991, краткость, возможно, и сестра таланта, но только не здесь... Вообще-то "недоверенное ПО" нельзя запускать :) Для этого есть AppLocker.
А так, программе просто могут быть нужны полные права для дела, и без них она просто не сможет работать. Если не для дела - RunAsInvoker должен помочь. И я не вижу ничего страшного в избирательном подходе, ибо большинству программ полные права и не нужны.
А вам это нужно для кого? С какими правами пользователь(и) работают?
Помогите и мне. Есть программа KeySwitcher (аналог Punto). Если включить UAC, то автозапуском она не стартует. Как побороть???????
t_ara_s, в планировщик поставьте выполнение при входе в систему и с наивысшими правами. Для справки см. Упрощаем запуск приложений в Windows 7 от имени администратора без отключения UAC (http://www.oszone.net/10594/run_as_admin) (номер 4). Вообще, вопрос оффтоп - продолжайте тут (http://forum.oszone.net/thread-155099.html), если непонятно что-то.
Morpheus
06-01-2011, 22:24
t_ara_s, значит несовместимая с Windows 7 версия. http://www.oszone.net/10594#400 - в триггере укажите "при входе в систему".
Vadikan, опередил :)
myhouse_1991
06-01-2011, 23:29
А вам это нужно для кого?
Для себя.
С какими правами пользователь(и) работают?
Сделано как по-умолчанию. Встроенный администратор не используется т.к. я заметил его особенность обходить UAC.
Пока раздумываю отключить ли UAC (но я теряю и виртуализацию) и использовать классическую схему с 2 пользователями с разными правами, или оставить как есть и использовать UAC, который мне пока что доставляет одну проблему, описанная чуть выше.
Вообще-то "недоверенное ПО" нельзя запускать
Да, это я понимаю, но иногда приходится. В Windows XP я обычно для этого создавал пользователя-жертву с ограниченными привилегиями, запускал непонятное ПО и просматривал Process Monitor'ом деятельность. Также чтобы потом долго не возиться с последствиями и с удалением пользователя - включал фильтр записи EWF (кстати, аналог в Windows 7 есть?) перед экспериментами, чтобы после перезагрузки вернуться к тому, что было раньше. Но времена меняются и решил потихонечку переходить на Windows 7, где я столкнулся с некоторыми проблемами...
Запускать недоверенное ПО с заниженными привилегиями.
Хотя не только это - я обычно придерживаюсь принципа работы с заниженными привилегиями, что спасало меня в Windows XP от многих проблем, в частности от переустановок. Но проблема с UAC в том, что когда я знаю, что для этой программы точно не нужны права администратора, UAC иногда определяет как раз наоборот и не даёт запустить с заниженными привилегиями (вариант запуска с администратором не предлагать - принцип заниженных привилегий для меня куда важнее, чем потом мучиться с глюками ОС из-за ошибки программиста), а лазить каждый раз для этого в реестр... Нет ли просто глобальной настройки? Я это спрашиваю для того, чтобы заранее узнать перед написанием маленькой программы, которая автоматически дописывает в ветку реестра данные и стирает после вызова контекстного меню, которое добавлю вручную с надписью "Force Run As Limited User in UAC".
А так, программе просто могут быть нужны полные права для дела, и без них она просто не сможет работать. Если не для дела - RunAsInvoker должен помочь. И я не вижу ничего страшного в избирательном подходе, ибо большинству программ полные права и не нужны.
Я не совсем понял логику определения "Нужны повышения" и "Не нужны повышения" :
1) Я пробовал запустить троян vzlom_vkontakte.exe - он регистрирует службу для зловредной деятельности и тут UAC правильно определил, что для корректной работы нужны повышенные права. Но я, допустим, не знаю, что он конкретно делает и хочу запустить, но только с заниженными привилегиями не отключая UAC + по возможности включить виртуализацию.
2) Запустил Windows Worms Door Cleaner (не надо говорить, что его делали для Windows XP - это для проверки), который лезет в ветку реестра HKLM и тут UAC не определил, что ему нужны права администратора - видимо виртуализовывает.
3) Запустил SFX распаковщик и тут UAC пристаёт с тем, что ему нужны права администратора - с чего это вдруг? Этот SFX я сам создал для проверки UAC. Не надо говорить, что можно взять WinRar, 7-zip и т.д. для распаковки. Просто для меня это говорит о том, что UAC не всегда корректно определяет, когда нужно повышать права, а когда нет и при этом запрещает мне занизить принудительно права, даже если я знаю, что этого будет достаточно.
Для этого есть AppLocker.
AppLocker работает по принципу классической политики SRP (Software Restrict Policy). Только я не понимаю, имеет ли она какое-то отношение с запуском любой программы с заниженными привилегиями в обход того, что думает UAC.
Morpheus
06-01-2011, 23:40
myhouse_1991, UAC ничего не думает, ему 10 раз фиолетово. Повышать или нет, решает разработчик программы и прописывает это в манифесте. Если софт старый (писался ещё под XP и более старые версии) - разумеется никаких повышений не закладывалось.
Да, это я понимаю, но иногда приходится. В Windows XP я обычно для этого создавал пользователя-жертву с ограниченными привилегиями, запускал непонятное ПО и просматривал Process Monitor'ом деятельность. »
А виртуальные машины не рассматриваете? Побезопасней будет.
Пока раздумываю отключить ли UAC (но я теряю и виртуализацию) и использовать классическую схему с 2 пользователями с разными правами, или оставить как есть и использовать UAC »
Я не вижу смысла в "классической схеме". См. аргументацию в http://www.outsidethebox.ms/10034/ от "С какими правами работать?" до "Безопасность или комфорт" включительно.
Я не совсем понял логику определения "Нужны повышения" и "Не нужны повышения" »
Приложения Microsoft спроектированы так, что запрос выводится при необходимости (пример - редактор реестра, проводник при копировании файлов в системную папку). Для сторонних приложений запрос на повышение выводится, опять же, если это заложено в программу (манифест), либо определяется параметрами совместимости приложения (задается в свойствах приложения = в реестре, см. пост 4). Для всех остальных приложений, которые можно назвать "старыми", т.е. не умеющими работать с UAC, применяется виртуализация. См. http://www.outsidethebox.ms/10034/ "Старые приложения".
Запустил Windows Worms Door Cleaner (не надо говорить, что его делали для Windows XP - это для проверки), который лезет в ветку реестра HKLM и тут UAC не определил, что ему нужны права администратора - видимо виртуализовывает. »Да, это пример старого приложения. Другими словами, за счет виртуализации UAC может нейтрализовать вредоносное ПО, рассчитанное на внесение изменений в системные параметры и папки.
Запустил SFX распаковщик и тут UAC пристаёт с тем, что ему нужны права администратора - с чего это вдруг? »
Не зная "начинки" и условий выполнения, невозможно сказать. Очевидно, распаковка производится в системную папку, либо после распаковки выполняется приложение, требующее повышения.
Что касается ваших экспериментов с вредоносным ПО на рабочей системе, то это безрассудно, а если отбросить политкорректность, то попросту глупо. Используйте виртуальные машины. См. также Эксперименты с программами (http://www.outsidethebox.ms/10899/#software).
AppLocker работает по принципу классической политики SRP (Software Restrict Policy). Только я не понимаю, имеет ли она какое-то отношение с запуском любой программы с заниженными привилегиями в обход того, что думает UAC. »С UAC это не связано. Я упомянул AppLocker в контексте ограничения запуска "недоверенных" приложений, поскольку на тот момент формулировка вашей задачи была расплывчатой.
myhouse_1991
07-01-2011, 13:47
Что касается ваших экспериментов с вредоносным ПО на рабочей системе, то это безрассудно, а если отбросить политкорректность, то попросту глупо. Используйте виртуальные машины. См. также Эксперименты с программами.
Если говорить, что безопасней всего - использовать только отдельную машину, ведь из виртуальной среды тоже можно выбраться. Чего только стоит недоценить возможность виртуальной машины атаковать ваши же открытые порты со статусом Listening, если ему дали доступ к сети.
то это безрассудно, а если отбросить политкорректность, то попросту глупо
По мне надо же иногда проверять как противостоит ему Windows, а не только принимать на веру все эти антивирусы, Firewall'ы и т.д.
Другими словами, за счет виртуализации UAC может нейтрализовать вредоносное ПО, рассчитанное на внесение изменений в системные параметры и папки.
Вот этот эффект я и хотел использовать.
По мне надо же иногда проверять как противостоит ему Windows, а не только принимать на веру все эти антивирусы, Firewall'ы и т.д. »
Не очень понимаю, что мешает это проверять на виртуальной машине, ну да ладно...
Вот этот эффект я и хотел использовать. »
Я бы не стал на него всецело полагаться, ибо отсутствие полных прав не означает отсутствия вредоносных функций. Шпионить можно и из профиля пользователя...
myhouse_1991
13-01-2011, 14:24
Сделал я то, что хотел. Назвал в контекстом меню пункт как Force Run As Invoker (UAC) вместо задуманного Force Run As Limited User in UAC т.к. не используется сторонняя программа для понижения прав, а используются лишь штатные средства.
Вот сам твик реестра.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Force Run As Invoker (UAC)"
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /C \"REG ADD \"HKCU\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /t REG_SZ /d RunAsInvoker && start \"\" \"%1\" && REG DELETE \"HKCU\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f\""
Принцип действия простой - изменяется реестр как описано здесь:
можно в разделе реестра
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
создать параметр: полный_путь_к_программе.exe = RUNASINVOKER
Потом программа запускается, а после та запись удаляется из реестра.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC