Как и на многих предприятиях у нас строгая политика безопасности прописанная в СТП и рядовые сотрудники не имеют админских прав, поэтому периодически случаются проблемы с работой софта под пользовательской учетной записью, т.к. ПО требует расширенных прав.
Итак что имею на старте, ОТК(отдел технического контроля) запросил установку сопровождающего микроскоп ПО «Эксперт Prima версия 1.0» на обычную пользовательскую машину с Windows XP.
Установка была произведена, но обнаружена следующая проблема. Программа не видит камеру и обрезает интерфейс после запуска из под пользователя, под администратором ПО работает корректно.
Первое, что я попробовал предпринять – это дал права на изменение пользователю в каталог с программой LOMO.
Это действие не дало положительных результатов. Вооружившись утилитой Process Monitor, настроил в ней фильтр на процесс Prima.exe и запускаю ПО «Эксперт Prima».
Утилита выводит все затрагиваемые ресурсы системы для работы Prima.exe
Далее для удобства работы экспортирую результат в csv и открываю с помощь Microsoft Excel.
Сортирую по полю Detail и иду смотреть затрагиваемые кусты, меня интересует значение Desired Access: Read/Write.
Даю полные доступ пользователю на папки реестра:
HKLM\Software\Microsoft\VfWWDM Mapper
HKLM\System\CurrentControlSet\control\MediaResources\msvideo\MSVideo.VFWWDM
Почему именно эти папки? Т.к. пользователь имеет полный доступ к HKCU — это его ветка.
Запускаю для проверки, программа работает должным образом.
Надеюсь, статья окажется полезной начинающим админам и эникейщикам. Этот способ я использую очень давно т.к. он универсален и не разу меня не подводил.
Комментарии (28)
Marsikus
06.04.2016 16:30Если программу еще разрабатывают, то может стоит обратиться к разработчикам, сообщить им о проблеме и вынужденном способе решения?
tangro
06.04.2016 20:43+5Автор, оцените в результате какого спора длиной в год Вам достался инвайт: geektimes.ru/post/248118/#comment_8310958
:)
yosemity
06.04.2016 22:46+1Статья однозначно полезная, но хочу заметить, что при невозможности записи в реестр у вас бы не было SUCCESS значения, похоже скрин был сделан когда уже все заработало. Далее, импоритировать в Эксель нет необходимости, фильтры в PM отличные, да и зачастую приходится не пару веток ресстра разрешения дать… Устанете в эксель такскать после каждого шага. Следует просто добавить фильтр для <> SUCCESS.
qu_ba
07.04.2016 08:11Да, все верно! Делал скрины, уже после победы над проблемой))))
Тут наверное дело привычки, экспорт в Excel действительно не обязательный шаг!!!
toto20002
07.04.2016 08:15Есть еще вариант воспользоваться утилитой AdmiLink которая создает специальный ярлык позволяющий запускать конкретный софт от имении другой ученой записи без ввода пароля. Это более быстрый способ, но не такой красивый.
yosemity
07.04.2016 21:51+1Поясните, как это работает? Механика UAC и тем более ограниченные права не позволяют так делать.
toto20002
08.04.2016 15:50+1Ограниченные права позволяют запускать приложение от имени другой учетной записи, а AdmiLink безопасно автоматизирует этот процесс.
Утилита по шагам запрашивает данные, и генерирует ярлык с путем вида:
C:\Windows\saferun.exe -th C:\Windows\AdmiRun.Exe -d+ -i+ -w- -l+ -c- -a- -m- Z/2B8tY5AABDRcgV9RAWOUft2sfSYo1dWM6F5mnNlh7aIU2ZH97rtISnA/F6LmWk «C:\Program Files\...\...\....EXE»
В этой строке зашифрованы все данные для запуска. Параметры UAC стандартные, работает нормально.
kav4ik
08.04.2016 08:02+2Как мне кажется этой программой нужно осторожно пользоваться, т.к. была у меня ситуация что с помощью программы AdmiLink давал доступ к одной программе (название уже не припомню), так вот некоторые мои студенты умудрялись через help этой программы запускать, командную оболочку, с повышенными привилегиями.
istui
08.04.2016 08:55Кто ищет, тот всегда найдет (с)
В вашем случае и подобных (банкоматы, библиотечные терминалы и т.д.) нужны белые списки.
toto20002
08.04.2016 16:08Да, действительно, через некоторые приложения можно запустить исполняемый файл, например, если приложение использует диалог открытия файла со свободным выбором типа файла. Потенциальная дыра.
istui
А есть способ отучать особо наглые программы от UAC в W8.1/10? Например, чтобы распаковать архив, они запрашивают права админа, несмотря на наличие доступа к требуемой директории.
Невыдача прав приводит к закрытию программы. В теории, конечно, можно вооружиться дизассемблером и отучить программу от жадности к правам, но хотелось бы иметь какой-нибудь более простой способ
FishDude
Возможно вопрос был не о том, но… Если нужно просто убрать лишний запрос, а права админа уже есть — достаточно запустить программу с помощью шедулера. Например, CCleaner именно так «сам себя» и запускает.
istui
я вхожу в группу администраторы, но по умолчанию доступ к части директорий требует подтверждения от UAC в W8.1/10. Я не хочу разрешать всякому «левому» софту, особенно если он не подписан, доступ к папке windows и т.д., который она получит при повышении привелегий, особенно, если я понимаю, что без этих прав программа 100% обойдется (папка программы доступна на запись и без привелегий, процесс обновления затрагивает только саму папку — я проверял через process monitor).
По-хорошему перед обновлением программа сама должна проверить разрешения на запись в свою директорию, и, только если его нет, выводить запрос на повышение привелегий, как поступают все «культурные» разработчики. В Windows многое секретов, я знаю далеко не все, поэтому и надеюсь, что может быть какой-то хитрый способ обхода (нечто вроде песочницы: и нажал «да», и прав все равно не дал)
MichaelBorisov
Я недавно обнаружил, что под Win7 любая программа, в названии которой имеются слова «updater», «install» или «setup», будет запрашивать привилегии через UAC, даже несмотря на то, что в программу честно прописан манифест, прямо указывающий, что админские права не нужны. Стоит только переименовать екзешник — и запрос UAC пропадает.
navion
Это можно отключить в политике «Detect application installations and prompt for elevation». Оно ещё ищет строки в ресурсах:
blogs.msdn.microsoft.com/uac/2006/01/13/identification-of-administrative-applications
MichaelBorisov
Как бы да, но разработчик же не может это сделать на компьютерах пользователей. Поэтому придется называть свои непривилегированные программы так, чтобы в них не было слов «update», «setup» и «install». Некрасивое решение.
navion
У манифеста с asInvoker разве не будет приоритета?
holomen
Вроде как temp лежит внутри windows, а архиваторы туда постоянно лезут. Вынести этот злосчастный темп, точнее оба — и пользовательский и системный (в переменных среды). Может поможет? Я их давно уже выношу в корень на автомате из соображений удобства — чтобы далеко не лазить при зачистке.
Ziptar
Существует прекрасная утилита от Марка Русиновича. Подробнее в его блоге: https://blogs.technet.microsoft.com/markrussinovich/2006/03/02/running-as-limited-user-the-easy-way/
Skler0z
Если на иконке приложения виден значок UAC в виде щита, велика вероятность, что для запуска с правами админа используется манифест а не API и можно обойтись без дизассемблера.
Нужно открыть EXE-файл в любой программе, позволяющей редактировать ресурсы (Resource Hacker — навскидку), и в manifest'е заменить в узле «requestedExecutionLevel» значение атрибута «level» на «asInvoker».
istui
Кстати да! и я же сам писал когда-то манифесты, но забыл… Спасибо!!!
P.S. ник в тему :)
andreishe
Про какой API идет речь?
Skler0z
WinAPI, ShellExecute c 'runas', вроде бы.
andreishe
Спасибо. Я подумал, что появилось что-то для элевации текущего процесса.
navion
Через ACT, как и в обратную сторону:
blogs.technet.microsoft.com/askperf/2010/08/27/act-suppressing-elevation-prompts-for-legacy-applications
istui
Я так и думал, что что-то похожее должно быть!