Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизMicrosoft заботится о нас. Иногда даже чересчур Найти похожие ветки
← →
Игорь Шевченко © (2010-04-03 18:36) [0]Может и баян, но тем не менее два часа от этой заботы я потерял:
http://ischevchenko.blogspot.com/2010/04/uac.html
← →
McSimm © (2010-04-03 19:19) [1]Вот оно как.
Прочитал, но не уверен, что все понял. Может ли программист умышленно заставить систему требовать административных прав для инсталлятора или это полностью возложено на ОС ?
Просто утомляют инсталляторы, которые сначала долго жужжат, а потом выясняется, что прав ему не хватило и надо его было запускать от имени администратора.
← →
tesseract © (2010-04-03 19:21) [2]Оригинальное исследование работы UAC. Такая реакция на имя исполнительного файла есть ИМХО защита от полиморфиков. Хорошо бы такое "позволение" вырубалось.
ЗЫ: Такой подход используется например в Касперском и TrendMicro - ИМХО дыра в защите.
← →
AlexDan © (2010-04-03 19:23) [3]Вообщем, реклама блога Игоря Шевченко). неплохо, фотография замечательня), где-то год его прийдётся заполнять, информации мало естественно).. да, в инсталляторах думал отказаться от слова сетап, но как-то не хочется отходить от привычного..)
← →
Игорь Шевченко © (2010-04-03 19:24) [4]McSimm © (03.04.10 19:19) [1]
> Может ли программист умышленно заставить систему требовать
> административных прав для инсталлятора
Да, может. В моем случае - не хочет :) Достаточно переименовать и все работает как задумано. Программа не выполняет никаких действий, приписываемых обычным инсталляторам, не лезет в реестр (больше чем любая программа на Delphi), не создает файлов/каталогов, работает исключительно с базами данных.
← →
tesseract © (2010-04-03 19:30) [5]
> не лезет в реестр
Давно вот мучает вопрос - "пачиму!". Есть только одна мысля - Delphi делает код который изначально проверят доступ к системным папкам или создаёт потоки со странными SecurityAttributes или просто считывает свои ресурсы из exe файла с правами на запись - что вызывает бешенство антивиров?
← →
McSimm © (2010-04-03 19:37) [6]
> > Может ли программист умышленно заставить систему требовать
> > административных прав для инсталлятора
>
>
> Да, может.
Ну, почеиу же они этого не делают? Даже в "серьезных" продуктах, вроде инсталлятора апача или wm клиента
Почему так много программистов уверены, что все работают под админом?
(внимание, вопросы риторические)
← →
Игорь Шевченко © (2010-04-03 19:37) [7]tesseract © (03.04.10 19:30) [5]
> Есть только одна мысля - Delphi делает код который изначально
> проверят доступ к системным папкам или создаёт потоки со
> странными SecurityAttributes или просто считывает свои ресурсы
> из exe файла с правами на запись
Ничего из перечисленного стандартная программа не делает. Более того, простая программа (форма, кнопка, два ствола) с именами setup, install, update не вызывает возбуждения у UAC
← →
Игорь Шевченко © (2010-04-03 19:38) [8]McSimm © (03.04.10 19:37) [6]
> Ну, почеиу же они этого не делают?
Наверное потому, что не хотят изменять работающие инсталляторы в угоду Висте или Win7 ?
← →
tesseract © (2010-04-03 19:41) [9]
> ичего из перечисленного стандартная программа не делает.
Свои DFM из ресурсов она в любом случае считывает.
← →
DVM © (2010-04-03 19:46) [10]
> Игорь Шевченко © (03.04.10 18:36)
Вообще факт известный. И даже тут как то мельком немного обсуждался на заре появления UAC.
← →
Игорь Шевченко © (2010-04-03 19:54) [11]DVM © (03.04.10 19:46) [10]
Вообще я не в курсе. Ткнешь ссылкой - буду признателен
tesseract © (03.04.10 19:41) [9]
> Свои DFM из ресурсов она в любом случае считывает.
В этом случае на считывание DFM из ресурсов UAC/Антивирус возбуждался бы на любой delphi-йской программе.
← →
DVM © (2010-04-03 20:02) [12]
> Игорь Шевченко © (03.04.10 19:54) [11]
> И даже тут как то мельком немного обсуждался на заре появления
> UAC.
Я боюсь не найду, давно было, помню АП там еще там в обсуждении участвовал. Про инсталляторы или про UAC тема была.
Суть в том, что есть некий набор признаков для инсталлятора. Очевидно, что когда для программы преодолевается некий критический порог, то ее начинают подозревать в том что она инсталлятор.
Нужно сочетание признаков, иногда и на имя может не среагировать если других признаков нет.
← →
DVM © (2010-04-03 20:04) [13]
> Игорь Шевченко © (03.04.10 19:54) [11]
Видно, что то в твоей программе "не понравилось" UAC. Что именно сложно сказать.
← →
tesseract © (2010-04-03 20:08) [14]
> UAC/Антивирус возбуждался бы на любой delphi-йской программе.
Оно так и делает :-)
← →
DVM © (2010-04-03 20:10) [15]
> tesseract © (03.04.10 20:08) [14]
> Оно так и делает :-)
В каком смысле? Проверять проверяет, но вопросы же не задает.
← →
Игорь Шевченко © (2010-04-03 20:13) [16]DVM © (03.04.10 20:04) [13]
> Видно, что то в твоей программе "не понравилось" UAC
Меня взгляды UAC при разработке своих программ не очень интересуют. А возможность отладки, наоборот, интересует. А когда происходит конфликт между взглядами UAC и отладкой, интерес перерастает сначала в недоумение, потом в раздражение :)
> Что именно сложно сказать.
Так это же самое интересное! Кстати, раз пошла такая пьянка^^^^^^дискуссия, нет ли какого-то способа заставить UAC показать, что именно ему не нравится ? Ну или как-то в Eventlog писать с конкретным диагнозом ? Хотя просмотр EventLog в Windows 7 занятие само по себе не для слабонервных.
← →
tesseract © (2010-04-03 20:17) [17]
> Проверять проверяет, но вопросы же не задает
"Это приложение хочет изменить ля-ля-ля на вашем диске".
> что именно ему не нравится
Думал, что это должно быть в SDK. Видимо ошибался.
← →
DVM © (2010-04-03 20:20) [18]
> Игорь Шевченко © (03.04.10 20:13) [16]
> нет ли какого-то способа заставить UAC показать, что именно
> ему не нравится ?
Я уже задумывался над этим, но не нашел способа, кроме как последовательного сужения круга поиска. Но это не поможет, если UAC детектирует наличие в файле какой то сигнатуры (которая там может получиться совершенно случайно похожей на инсталлятор).
← →
DVM © (2010-04-03 20:22) [19]
> tesseract © (03.04.10 20:17) [17]
> "Это приложение хочет изменить ля-ля-ля на вашем диске".
у меня нет такого
← →
DVM © (2010-04-03 20:32) [20]
> Игорь Шевченко ©
А решение вероятно простое, всегда добавлять в программу requestedExecutionLevel и UAC точно будет знать какие права программе нужны.
← →
Anatoly Podgoretsky © (2010-04-03 20:33) [21]> Игорь Шевченко (03.04.2010 18:36:00) [0]
Странно, что ты не знал этого. Это же общеизвестный файл и такие программы должны запускаться с правами TrustedInstaller поскольку им даются особые полномочии. И одна из вещей это автоопределение инсталлера. Я бы самым первым бы подумал, а не провокатор ли я, с таким то именем.
Видимо и на старуху бывает проруха.
← →
Anatoly Podgoretsky © (2010-04-03 20:34) [22]> McSimm (03.04.2010 19:19:01) [1]
Это действительно неприятно, и это надо учитывать в своих поделках, что бы про нас тоже так не думали.
← →
Anatoly Podgoretsky © (2010-04-03 20:37) [23]> Игорь Шевченко (03.04.2010 19:24:04) [4]
Крупным планом, это ты сильно преувеличил, крупным планом должно быть именно крупным планом.
← →
Anatoly Podgoretsky © (2010-04-03 20:40) [24]> DVM (03.04.2010 20:02:12) [12]
Ну как я мог такую тему пропустить? Не мог.
← →
Игорь Шевченко © (2010-04-03 20:41) [25]Anatoly Podgoretsky © (03.04.10 20:33) [21]
> Странно, что ты не знал этого.
У меня Windows 7 не так давно.
> Это же общеизвестный файл и такие программы должны запускаться
> с правами TrustedInstaller поскольку им даются особые полномочии.
>
Это определяется только именем программы ? То есть, я обзываю программу IAmNotAnInstallerOrSetup и она начинает требовать прав ? :)
В таком случае это паранойя (кстати, проверил, будучи переименована в такое имя, программа действительно выдает предупреждение UAC)
Пгорамма не является, блин, инсталлятором с точки зрения Windows! Она не выглядит, как инсталлятор, не лает, как инсталлятор и не кусается как инсталлятор! :)
Я бы код выложил, не будь он коммерческим
← →
Anatoly Podgoretsky © (2010-04-03 20:42) [26]> Игорь Шевченко (03.04.2010 20:13:16) [16]
Как бы мне не нравились сообщения Микрософт, но иногда действительно некоторые сообщения вызывают раздражение, не указанием например имени файла.
← →
Anatoly Podgoretsky © (2010-04-03 20:43) [27]> tesseract (03.04.2010 20:17:17) [17]
Вот именно что то, но что не говорят.
← →
DVM © (2010-04-03 20:44) [28]
> Игорь Шевченко ©
Убедитесь в том, что в манифесте приложения указан параметр requestedExecutionLevel
Приложение должно работать в режиме Standard User
Параметр requireAdministrator требует повышения привилегий
Параметр asInvoker поддерживает режим Standard User
Отсутствие параметра requestedExecutionLevel приводит к включению механизмов обеспечения совместимости:
Перенаправление операций с файлами и реестром
Определение программ установки
Вызов Program Compatibility Assistant
http://mcp.itcommunity.ru/blogs/itproteamua/archive/2009/8/17.aspx
← →
DVM © (2010-04-03 20:45) [29]
> DVM © (03.04.10 20:44) [28]
Это шаги по проверке программы на Compatible with Windows 7
← →
Игорь Шевченко © (2010-04-03 20:46) [30]DVM © (03.04.10 20:32) [20]
Ты понимаешь, какая фигня, даже старая версия программы, почти полтора года назад скомпилированная D2006 под XP при запуске выдает такое же предупреждение. Мне в нее тоже манифест добавлять ? Или просить заказчиков - вы не обращайте внимания, это случайно сигнатура в моей программе совпала с одной из известной в MS, но это фигня, программа не вносит никаких изменений в ваши файлы и в ваш реестр, вы мне поверьте на слово...
Тебе сказать, куда меня после таких заявлений заказчики пошлют ? :)
← →
Игорь Шевченко © (2010-04-03 20:47) [31]DVM © (03.04.10 20:44) [28]
У приложения нету манифеста :) Ну то есть вообще нету
← →
DVM © (2010-04-03 20:48) [32]
> Игорь Шевченко © (03.04.10 20:46) [30]
> почти полтора года назад скомпилированная D2006 под XP при
> запуске выдает такое же предупреждение.
Ну никто же не занимался обеспечением ее совместимости с W7. А для этого нужен манифест.
Как вариант сделать им манифест и положить в папку с программой.
← →
DVM © (2010-04-03 20:50) [33]
> Игорь Шевченко © (03.04.10 20:47) [31]
> У приложения нету манифеста :) Ну то есть вообще нету
Обязан быть получается. Иначе программа не совместима с W7 теоретически.
← →
Anatoly Podgoretsky © (2010-04-03 20:53) [34]> Игорь Шевченко (03.04.2010 20:41:25) [25]
Я удивился потому, что об этом писалось не один раз.
← →
Anatoly Podgoretsky © (2010-04-03 20:55) [35]> Игорь Шевченко (03.04.2010 20:46:30) [30]
А почему бы и нет, только не в нее, а можно рядом. Что позволяет это делать даже для чужих программ.
← →
Anatoly Podgoretsky © (2010-04-03 20:57) [36]> Игорь Шевченко (03.04.2010 20:46:30) [30]
Знаешь я видел инсталяторы с подобным заявление, и даже с требованием устанавливать в голову диска, а не в Program Files с обоснованием мол это ограничение ОС, а на самом деле просто автор хочет писать в папку с программой.
← →
Игорь Шевченко © (2010-04-03 21:03) [37]DVM © (03.04.10 20:48) [32]
Сделал манифест, по http://msdn.microsoft.com/en-us/library/bb756929.aspx
положил рядом с программой.
ArgoInstaller.exe.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86"
name="ArgoInstaller"
type="win32"/>
<description>Argo database installation application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
так оно мне теперь в FAR/В проводнике говорит, что "Запрошенная операция требует повышения" и на запускает вообще. Даже запроса UAC не выдает.
Что интересно - программа, скомпилированная на D2006 выдает запрос UAC, а потом сообщает, что не может быть запущена, так как не найден rtl100.bpl
то есть, "автообнаружение инсталлятора идет даже до проверки наличия DLL для импортируемых ссылок"
← →
DVM © (2010-04-03 21:18) [38]
> так оно мне теперь в FAR/В проводнике говорит, что "Запрошенная
> операция требует повышения" и на запускает вообще. Даже
> запроса UAC не выдает.
Мда, тогда действительно странный случай какой то. Даже не знаю что еще может быть.
← →
Anatoly Podgoretsky © (2010-04-03 21:19) [39]> Игорь Шевченко (03.04.2010 21:03:37) [37]
И похоже имя имеет приоритет перед манифестом.
← →
DVM © (2010-04-03 21:22) [40]
> Игорь Шевченко © (03.04.10 21:03) [37]
Единственное, что еще можно попробовать - это закатать манифест в файл. Вряд ли поможет, но ожидать можно всего.
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.069 c