Продолжение разговора с блога

Трёп обо всём

Продолжение разговора с блога

#1 Сообщение NightOrion » 24 окт 2011, 18:43

Разговор в блоге http://www.blogger.com/comment.g?blogID ... 2082821949 начатый с adc777 решил продолжить здесь

* >>Версии 5хх требует административных прав только при установке.
- Неправда и я уже указывал - FlyLinkDC++ ни 4.xx ни 5.xx: без админа под limuser, будучи уже установленным, - не запустится. И это не только на моём ПК/ОС; причину я уже давно расписал ранее, и вроде даже не раз! (Начиная с моего коммента от 20 октября 2011 г. 1:03 для FlylinkDC++ r501 beta45 - Это на тему «Среди вашего срача в прошлой ветке я не нашел никаких опровержений» - видать не сильно то и искали).
PS:+«только при установке» - это не оправдание угрозе безопасности множества пользователей вашей программы.

Версию 4хх мы не обсуждаем, данная версия находится в режиме ограниченной поддержки и в скором времени её жизненный цикл будет завершён и ни о какой либо поддержке не будет и речи.
Версия 5хх требует повышения прав ТОЛЬКО при установке, для работы ей требуются права обычного пользователя для работы в APPDATA.
Явно это требование в скрипте инсталлятора не прописано, однако в документации к InnoSetup в разделе [Setup]: PrivilegesRequired вы можете найти следующий текст:
On Windows Vista and later:

This directive affects whether elevated rights are requested (via a User Account Control dialog) when the installation is started.

When set to admin (the default) or poweruser, Setup will always run with administrative privileges. If Setup was started by an unprivileged user, Windows will ask for the password to an account that has administrative privileges, and Setup will then run under that account.

т.к. данная директива в скрипте отсутствует, используется значение по умолчанию, т.е. admin.

Так же в статье MicroSoft http://msdn.microsoft.com/ru-ru/magazin ... 86.aspx#S5 вы можете ознакомиться с UAC, как он работает и что рекомендуют разработчики Windows разработчикам сторонних программ.

В данном случае нас интересует
Установка приложений обычно требует полномочий администратора, так как двоичные файлы приложений записываются в каталог Program Files, который для стандартных пользователей доступен только для чтения. Это означает, что любое приложение, записывающее в этот каталог двоичные файлы, необходимо пометить как требующее полномочий администратора.

Как видите сами, разработчики Windows явно не дают рекомендаций по выбору папки для установки, однако считают установку в Program Files вполне нормальной.

В манифесте к главному исполняемому файлу нет указания прав при запуске, по умолчанию выставляется asInvoker, т.е. без требования админских прав.

p.s. какую угрозу безопасности вы видите в админских правах для инсталлятора программы ?

* >> Это необходимо из-за установки в каталог Program Files.
- Ложь, это не необходимо, т.к.не обязательно устанавливать в ОС-системные каталоги. И пользователи (сидящие под limuser) Флая не такие тупые чтобы до этого не додуматься.

Как раз чтобы защитить программу от пользователей с ограниченными правами, её надо установить в Program Files. Так же в статье, указанной выше, это не опровергается, мало того в статье http://support.microsoft.com/kb/835833/en (вынужден привести статью на английском, т.к. из-за опечатки, которую мне по телефону подтвердил ТП Microsoft и обещались исправить, поменялся смысл фразы при переводе на русский язык) четко сказано:
It’s good housekeeping to put applications in their own folders of the Program Files directory.
Рекомендуется устанавливать программы в специально отведенные для них папки в каталоге Program Files.

Но т.к. это рекомендация, то мы не ограничиваем пользователя в выборе папки для установки.
* >>Все свои настройки версии 5xx хранят в каталоге пользователя, доступ в который не требует каких либо административных прав.
- Эта ложь, о не требует, по сути дублирование предыдущей.

В статье http://msdn.microsoft.com/ru-ru/magazin ... 86.aspx#S5 как раз описыается для чего используется папка %appdata%, %localappdata% и %allusersprofile%
из описания понятно что данными в этих каталогах программы могут оперировать без требований каких либо прав
* >>Так же FlylinkDC++ прописывает необходимую информацию в реестре в пользовательском разделе. Для этой операции так же нет необходимости в административных правах.
- Т.е это вы мне доказываете что Флайлинку админправа - не нужны?! :[] Не ЛГИТЕ - мне это известно.
+Впрочем ради такого дела можно отказаться и от несильно то нужной привязки к DC++ расширениям, если бы было нужно конечно, это так для примера.

Если хотите отказаться от привязки, в настройки - дополнительно есть два пункта
Перехватывать ссылки вида dchub:// этим DC++ клиентом
Установить обработчик магнетссылок при запуске
снимите эти галки и программа не будет лезть в реестр

Далее, по существу. Код, где происходит обращение к реестру, содержится в файле windows\WinUtil.cpp http://code.google.com/p/flylinkdc/sour ... inUtil.cpp строки
Код: выделить все
  D:\VC\google\5xx\windows\WinUtil.cpp(1600):   if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Classes\\dchub\\Shell\\Open\\Command"), 0, KEY_WRITE | KEY_READ, &hk) == ERROR_SUCCESS)
  D:\VC\google\5xx\windows\WinUtil.cpp(1644):   if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Classes\\nmdcs\\Shell\\Open\\Command"), 0, KEY_WRITE | KEY_READ, &hk) == ERROR_SUCCESS)
  D:\VC\google\5xx\windows\WinUtil.cpp(1686):   if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Classes\\adc\\Shell\\Open\\Command"), 0, KEY_WRITE | KEY_READ, &hk) == ERROR_SUCCESS)
  D:\VC\google\5xx\windows\WinUtil.cpp(1728):   if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Classes\\adcs\\Shell\\Open\\Command"), 0, KEY_WRITE | KEY_READ, &hk) == ERROR_SUCCESS)
  D:\VC\google\5xx\windows\WinUtil.cpp(1774):   if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Classes\\magnet\\shell\\open\\command"), 0, KEY_READ, &hk) == ERROR_SUCCESS)
  D:\VC\google\5xx\windows\WinUtil.cpp(1840):   if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Classes\\DCLST metafile\\shell\\open\\command"), 0, KEY_READ, &hk) == ERROR_SUCCESS)
  D:\VC\google\5xx\windows\WinUtil.cpp(1903):      if (::RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Classes\\.torrent\\OpenWithProgids"), 0, KEY_READ, &hk) == ERROR_SUCCESS)

Как мы видим вся работа происходит только в HKEY_CURRENT_USER, а согласно статье http://msdn.microsoft.com/ru-ru/magazin ... 86.aspx#S3 это можно делать и без привелегий администратора
*>> Так же хочу обратить ваше внимание что все программы при установке требуют административных прав, т.к. они устанавливаются в каталог Program Files.
- (Повтор о сист.папках), +ложь №2 - далеко не "все программы". И уж точно большинство как и Флайлинк может быть установлено в др.папку, даже не знаю к чему это тут.

Тут могу согласиться только частично, большинство программ требуют повышения прав сразу при запуске инсталлятора (к ним и относится инсталлятор FlylinkDC++), некоторые программы производят запрос прав только когда им уже надо записать файлы в защищённый каталог Program Files.
*>> И это нормальная практика.
- Тоже ложь. Даже тот же MS - и то рекомендует программистам чётко размежевать установки и запуски ПО под админом и под более урезанными версиями. Другие делают просто portable версии. И потому куча (сетевых, не говоря уже не сетевых) программ устанавливается и запускается без повышенных привелегий.

Как я уже написал выше со ссылками на две статьи Microsoft РЕКОМЕНДУЕТ установку программ в Program Files.
>>Давайте попунктно, я вам так же без проблем отвечу.
- Я, как и просили, вам - расписал "попунктам".

я вам достаточно попунктно ответил ?

P.S.
Я всё таки нашел ваш первый пост и у меня вопрос, не могли бы вы указать все ограничения, которые вы наложили на пользователя, из-за чего у него без прав админа FlylinkDC не работает нормально ? т.к. я делал работу в %APPDATA% у меня UAC не отключен для тестирования но я не могу воспроизвести указанную вами проблему.
Самым большим доказательством существования разумной жизни во вселенной является тот факт, что с нами до сих пор никто не попытался связаться
Аватар пользователя
NightOrion
Администратор
Администратор
 
Сообщений: 321
Зарегистрирован: 17 мар 2011, 01:56
Откуда: Кемерово
Благодарил (а): 2 раз.
Поблагодарили: 9 раз.
Версия флая: только что собрал

Re: Продолжение разговора с блога

#2 Сообщение Archon » 24 окт 2011, 20:52

NightOrion писал(а):Тут могу согласиться только частично, большинство программ требуют повышения прав сразу при запуске инсталлятора (к ним и относится инсталлятор FlylinkDC++), некоторые программы производят запрос прав только когда им уже надо записать файлы в защищённый каталог Program Files.

Второй вариант мне больше нравится. Кто-нибудь, запилите, а?
Archon
Бывалый
Бывалый
 
Сообщений: 246
Зарегистрирован: 18 мар 2011, 11:03
Благодарил (а): 1 раз.
Поблагодарили: 14 раз.
Версия флая: r502 rc


Вернуться в Курилка

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron