На IT форумах грамотные люди часто говорят: не надо сидеть в Windows под администратором, используйте учетку администратора для установки и настройки программ, а работайте с правами пользователя. Так — безопаснее.


Когда я переустановил систему на домашнем компьютере одному клиенту и отдавал системный блок, рассказал ему в нескольких словах о правах пользователей. Идея понравилась и он сказал: очень хорошо, я дома сам нового пользователя добавлю. Вечером перезвонил с двумя вопросами: почему при каждой загрузке учетки с правами пользователя что-то непонятное ругается сообщением «Disk monitor fail»? И почему программа ТВ-тюнера Aver отказывается запускаться, заявляя «Access denied»?

Что это такое «Disk monitor», подумали Вы?

Никаких мониторов я не устанавливал? По первому вопросу на месте выяснилось, что к внешнему USB кардридеру прилагался установочный компакт-диск, с которого в системный трей установилась программа с гордым названием Disk Monitor. Зачем — неизвестно, потому что в Windows XP есть все необходимое для работы с этим кардридером без каких-либо драйверов и программ. Ок, раз по факту Disk Monitor нам не нужен,и горе-программеры не удосужились проверить, будет ли их творение работать с правами пользователя, значит в топку (uninstall) его.

«Рихтовка» Aver TV

С Aver вопрос сложнее. Понятно, что в общем проблема та же: программисты не проверяли, будет ли написанный ими код работать с правами обычного пользователя. Но деинсталлировать эту программу нельзя, иначе ТВ-тюнер станет бесполезной железякой. Значит, надо постараться подружить программу и операционную систему.

Обратите внимание на полезную в таких случаях команду RunAs. Намного удобнее из учетки пользователя запустить отдельное окно Проводника с правами администратора, чем несколько раз перелогиниваться между учетками администратора и пользователя.

Шаг 1, настройка программы

Начинаем с самого простого. Возможно, в самой программе есть какие-либо настройки, которые конфликтуют с правами безопасности? Открываем диалог настроек Aver TV и в закладках Аудио и Видео видим пути, куда программа будет сохранять записи ТВ и радио эфира. Так и есть, программисты не думали о том, что в Windows может быть несколько пользователей и сделали всего один, общий для всех вариант настроек. Для записи прописан путь C:\Documents and Settings\admin\Мои Документы, если программа будет запущена с правами пользователя, она получит отказ от системы.

Исправляем путь на нейтральный для всех, например D:\My Video. Кстати, на диске D: и места намного больше. Проверяем, чтобы для этой папки для всех пользователей были установлены полные права. Запускаем Aver TV… то же окно, Access Denied.

Шаг 2, права к папке программы и ветке реестра

Выстрел наугад, но у нас задача заставить программу заработать, а не написать диссертацию на тему «исследование программы Aver TV». Устанавливаем полные права для папки C:\Program Files\Aver и ветки реестра HKLM\Software\Aver. Дело в том, что программисты часто хранят настройки в каталогах своих программ или в общесистемной ветке реестра. При этом они или забывают, или не догадываются, что для пользователей запрещена запись в папки Windows, Program Files, ветвь реестра HKEY_LOCAL_MACHINE.

В Проводнике и редакторе реестра (с админскими правами) меняем права, запускаем Aver TV… Access Denied.

Шаг 3, Process Monitor

Что ж, похоже не получилось.Но ничего страшного есть программа Process Monitor от Марка Руссиновича из Sysinternals. Эта программа отслеживает любые операции с файлами или реестром, с ее помощью мы можем зафиксировать, на какой именно операции программа, запущенная с правами пользователя, получила отлуп от операционной системы. Для того, чтобы не искать нужное нам событие среди сотен и тысяч других, воспользуемся фильтром. Попросим Porcess Monitor показывать нам только те события, которые создала программа avertv.exe:

Можно установить еще один фильтр, который исключит все записи с результатом SUCCESS. После установки фильтров запукаем программу AVerTV, получаем уже знакомое окно Access Denied и смотрим, что выловил Process Monitor.

Все просто. Талантам, написавшем софт для тюнера Aver, захотелось хранить файл настроек aver.ini не где-нибудь, а в системном каталоге C:\Windows. Да уж, ТВ-тюнер — это не какие-нибудь шашки-машки, а оочень важная программа, и ее настройкам место именно в системном каталоге.

К сожалению, переписать программу мы не можем. Зато можно изменить права доступа к файлу C:\Windows\aver.ini (пусть подавится). Меняем права с чтение+выполнение на полные, запускаем AverTV еще раз и — вуаля, наконец-то она работает с правами обычного пользователя.

Выводы

Как правило, совсем не сложно заставить работать с ограниченными правами программу, которая написана не совсем корректно.Вообще, программ, которым на самом деле нужны полные системные привилегии, очень мало. А крепких линеек для выпрямления рук многим программистам, наоборот, очень не хватает. Умные люди говорят, что в мире Windows плохую службу сослужили Win3-95-98, в которых по сути не было понятия «права пользователя». На этих системах, наверное, и воспитались программеры, которые пишут подобный код.

Специально  для программистов — вот ссылка на статью в MSDN, где расписывается правильный подход к вопросу хранения данных и настроек в Windows. Можно например так: при установке программы настройки создаются в All Users или HLKM ветке реестра. Для каждого пользователя на основе этих настроек создаются или наследуются персональные настройки в Application Data или HKCU ветке реестра.Пользователи, попробуйте не жаловаться, что ограничение прав вас напрягает. Посмотрите вокруг: в Linux пользователи не сидят с полными правами и для важных действий требуются права администратора. В Mac OS X действует подобный же принцип. В Vista и Windows 7 работает удобный на мой взгляд механизм UAC, требующий от пользователя разрешение на выполнение некоторых действий. Надо просто привыкнуть работать немного по-другому.

Читайте ранее:
Windows 7 Не закрепляются иконки в панели задач.

Вы наверное сталкивались с такой проблемой в Windows 7 у программных иконок в меню Пуск не нажимается кнопка, стрелка вправо....

Закрыть