Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.054 c
15-1265841005
Юрий
2010-02-11 01:30
2010.08.27
С днем рождения ! 11 февраля 2010 четверг


15-1269576375
Джони
2010-03-26 07:06
2010.08.27
Командная строка и URL запрос


2-1273303750
FIL-23
2010-05-08 11:29
2010.08.27
поиск в Query


15-1271160223
Медвежонок Пятачок
2010-04-13 16:03
2010.08.27
нас ждет еще один капец


6-1222988045
sanchopansa
2008-10-03 02:54
2010.08.27
многопоточность при отправке письем через IdSmtp