Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.107 c
2-1273162517
Grumd
2010-05-06 20:15
2010.08.27
Поиск строки в переменной типа string


2-1275459989
novai
2010-06-02 10:26
2010.08.27
Не минимизация второй формы


6-1205426277
Dima
2008-03-13 19:37
2010.08.27
WinAPI + скачивание файла по http (просто)


2-1266493951
AndreyZAA
2010-02-18 14:52
2010.08.27
Поиск в базе данных с помощью Locate, SQL или только переборкой?


11-1217589019
rainstuff
2008-08-01 15:10
2010.08.27
Время и дата - некорректно отображение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский