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

У меня есть приложение, написанное на 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 для описания шагов сборки!)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...