Обход ограничений включенного контроля доступа к папкам Защитника Windows

У меня есть приложение, написанное на C#, которое устанавливается через InnoSetup.

При включенном доступе к контролируемым папкам в Защитнике Windows 10 программе установки не удается создать значок на рабочем столе (показывая сообщение PersistFile::Save failed, code 0x80070002) - несмотря на то, что работает с правами администратора.

Кроме того, установленному приложению (которое НЕ запускается с правами администратора) не удается записать в папки пользователя, например " Документы".

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

Первый вопрос, который мне приходит в голову: почему мое заявление считается вредоносным и поэтому блокируется?

Я провел обширное исследование, чтобы получить ответ, но не смог найти ничего, что помогло бы:

  1. Веб-ресурсы от Mircosoft, описывающие, какие приложения считаются вредными и почему их нельзя найти - там только догадки.

  2. Подписание моего приложения с помощью расширенного сертификата проверки (который помогает подавлять предупреждения SmartScreen) не меняет поведение Защитника Windows.

  3. Я позволил Windows App Certification Kit проанализировать установщик, который сообщил о нескольких предупреждениях и одной критической ошибке. Я исправил все проблемы, на которые жаловался Кит (кроме предупреждения о /SAFESEH, которое невозможно с InnoSetup), но это не изменило поведение Защитника Windows в отношении блокировки доступа.

Итак, мой уточненный вопрос: как я могу правильно обойти блокировку доступа Защитника Windows для моей установки и моего приложения?

Чтобы понять проблему и создать основу для экспериментов, я создал небольшой пример приложения на C#, который

  1. создает новые (а затем удаляет) каталоги в общедоступном пути к рабочему столу, пути к рабочему столу пользователя, обычным путям документов и путям документов пользователей
  2. связывается скриптом InnoSetup с подписанным установщиком

Используя Visual Studio для сборки решения и InnoSetup для упаковки сборки, должно быть легко воспроизвести поведение с включенным доступом к контролируемым папкам. (Обязательно загляните на README.md для описания шагов сборки!)

Пожалуйста, ознакомьтесь с примером проекта.

0 ответов

Другие вопросы по тегам