Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Уведомление Проводника об изменениях в реестре


Автор: Калям 5.8.2013, 20:34
user posted image

Небольшое введение.

Предположим, что опция "Запуск программ и небезопасных файлов" установлена в значение "Предлагать". Если сейчас попробовать запустить приложение, расположенное не на локальной машине, то появится диалог с подтверждением этого действия (см. скриншот). Если изменить эту опцию стандартным способом через "Свойства обозревателя" на, к примеру, "Включить", то никакого диалога при запуске не будет. Это стандартное и правильное поведение.

За названную опцию в реестре отвечает параметр HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1806.

Проблема.

Когда я изменяю опцию программно, т. е. через реестр, то Проводник эти изменения не учитывает. Если рассмотреть тот же пример выше, то при изменении опции на "Включить" по-прежнему будет выдаваться диалог.

Решения вида
Код

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0, SMTO_ABORTIFHUNG, 500, MessageResult);

или
Код

InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
InternetSetOption(nil, INTERNET_OPTION_REFRESH, nil, 0);

не дают нужного эффекта.

Как корректно уведомить систему о сделанных изменениях?

Автор: Illusion Dolphin 5.8.2013, 21:33
Цитата

не дают нужного эффекта.

Некоторые программы в таком случае просто перегружают проводник smile Т.е. terminate => run.

Автор: Poseidon 6.8.2013, 09:23
Цитата(Калям @  5.8.2013,  20:34 Найти цитируемый пост)
Если изменить эту опцию стандартным способом через "Свойства обозревателя" на, к примеру, "Включить", то никакого диалога при запуске не будет. Это стандартное и правильное поведение.
Да ладно, серьезно? Т.е. программисты Microsoft кучу времени и сил потратили на разработку и внедрение систем безопасности в операционную систему, а оказывается, что отключение этих систем есть "стандартное и правильное поведение". Да если бы мне попалась на глаза программа, которая без моего ведома меняет настройки безопасности, была бы она удалена сразу. Кто знает, что такая программа еще делает, что мне не ведомо. Кстати, еще вопрос как подобные действия будут классифицироваться антивирусами. Не удивлюсь, если чья-нибудь проактивная защита определит подобные действия подозрительными.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)