SmartScreen & amp; VisualStudio [дубликат]

Можно использовать аннотацию Apache @Model для создания классов модели Java, представляющих структуру файлов JSON, и использовать их для доступа к различным элементам дерева JSON. В отличие от других решений эта работает полностью без отражения и поэтому подходит для сред, где отражение невозможно или имеет значительные накладные расходы.

Существует образец проекта Maven , показывающий использование. Прежде всего он определяет структуру:

@Model(className="RepositoryInfo", properties = {
    @Property(name = "id", type = int.class),
    @Property(name = "name", type = String.class),
    @Property(name = "owner", type = Owner.class),
    @Property(name = "private", type = boolean.class),
})
final class RepositoryCntrl {
    @Model(className = "Owner", properties = {
        @Property(name = "login", type = String.class)
    })
    static final class OwnerCntrl {
    }
}

, а затем использует сгенерированные классы RepositoryInfo и Owner для анализа предоставленного входного потока и выбора определенной информации при этом:

List repositories = new ArrayList<>();
try (InputStream is = initializeStream(args)) {
    Models.parse(CONTEXT, RepositoryInfo.class, is, repositories);
}

System.err.println("there is " + repositories.size() + " repositories");
repositories.stream().filter((repo) -> repo != null).forEach((repo) -> {
    System.err.println("repository " + repo.getName() + 
        " is owned by " + repo.getOwner().getLogin()
    );
})

Вот и все! В дополнение к этому здесь live gist показывает аналогичный пример вместе с асинхронной сетевой связью.

69
задан Jk1 7 July 2014 в 10:09
поделиться

9 ответов

45
ответ дан Lex Li 26 August 2018 в 19:06
поделиться

Я тестировал решение EV cert, и он работает.

К сожалению, я также упомянул, что сертификаты EV несовместимы с TeamBuild, который выполняет подписание под контекстом службы. Сертификаты EV требуют аппаратного токена, который взаимодействует с поставщиком криптографических услуг, который предоставляется SafeNet, Inc для использования со всеми авторизованными поставщиками сертификатов EV (VeriSign и DigiCert).

Когда происходит подписание, драйверы из Safenet будут запрашивать пароль, который несколько несовместим с исполнением в контексте службы. Кроме того, Safenet обеспечивает защиту, которая предотвращает подписание чего-либо, кроме собственно консоли. Вы даже не можете подписываться из сеанса удаленного рабочего стола. Итак, подписание изнутри Teambuild проблематично в лучшем случае и невозможно в худшем случае.

Я работал с Microsoft, и они не смогли обеспечить обходное решение для подписания или каким-либо другим способом добиться мгновенной репутации в SmartScreen .

4
ответ дан Chris 26 August 2018 в 19:06
поделиться

К сожалению, у меня недостаточно ответов, чтобы просто прокомментировать один из приведенных выше ответов. Однако, если вы указываете частичное доверие для своего опубликованного приложения (я выбрал зону Интернета) и имею сертификат сертификации кода на месте, не отображается предупреждающее сообщение об интеллектуальном экране (отмечено на Win10).

1
ответ дан Daniel 26 August 2018 в 19:06
поделиться

Я подписываю свое приложение в автоматическом режиме, используя сертификат EV на токене (GlobalSign). Используйте файл .bat. в файле «.bat» введите ex: (для sha1)

SignTool.exe sign /n "Exact Enterprise name in the cert - token" /t "http://timestamp.globalsign.com/scripts/timstamp.dll" "c:\Patch_to_file\Filename.exe"

«Точное имя предприятия в сертификате - токен» должно быть точным именем, которое находится в сертификате (токене)

1
ответ дан Luciano Arruda 26 August 2018 в 19:06
поделиться

Мы просто прошли весь процесс перехода от старого сертификата Authenticode к новому (не EV-сертификат, просто простой сертификат, который можно использовать в нашем автоматизированном процессе сборки).

Microsoft больше не предоставляет никаких средств для передачи репутации из существующего сертификата на новый. Поэтому не пытайтесь вызвать их поддержку. Вы просто потратите много времени и энергии. И они не смогут помочь.

Microsoft утверждает, что если старый и новый сертификаты имеют одинаковый текстовый контент, репутация устанавливается быстрее. Более конкретно, вот ответ, который я получил от команды поддержки [SFG] [* g1] SmartScreen® Filter:

Обратите внимание, что всякий раз, когда вы обновляете сертификат с известной репутацией, вы вероятно, будут видеть некоторые предупреждения во время начальной загрузки файлов, подписанных с обновленным сертификатом. Однако известная репутация обновленного сертификата обычно устанавливается быстрее, чем на новом сертификате. Хотя обновленный сертификат устанавливает репутацию, пользователи все равно могут щелкнуть, чтобы запустить или сохранить загрузку. Для этого они выбирают Actions | Дополнительные параметры | Запуск Anyway из диспетчера загрузки.

Лучший способ гарантировать, что SmartScreen не будет предупреждать пользователей, - запустить комплект сертификации приложений Windows (WACK), который должен быть включен в загрузку Windows SDK :

Windows App Certification Kit [/g2]

После запуска тестов WACK объясняет, как действовать:

Final Report - Validation passed [/g3]

Загрузите XML-результат успешной сертификации приложения на https://sysdev.microsoft.com . Через несколько дней SmartScreen будет знать о цифровой сигнатуре, используемой для сертифицированной программы, и больше не будет предупреждать пользователей о загрузке.

Примечание. Мы не смогли сертифицировать наше приложение на последних обновлениях Windows 8.1, и нам пришлось использовать чистую установку Windows 8.1, чтобы получить WACK для успешной проверки всех наших программ.

44
ответ дан Pierre Arnaud 26 August 2018 в 19:06
поделиться

«Версия файла несовместима с версией окон, которые вы используете». Под сервером Windows 2008 в любом случае не существует кнопки «Дополнительная информация».

Когда мы разрабатываем программное обеспечение для Windows (не «Apps») с использованием продуктов, отличных от Microsoft (Delphi), и используем Innosetup для наш установщик, проверка приложения не имеет смысла. Он сидит там в течение 30 минут, ничего не делая, мы просто запускаем приложение, а затем закрываем приложение вручную, и оно генерирует отчет о проходе.

Мы кодируем все наши выпуски и каждый исполняемый файл внутри них.

Когда мы загружаем XML в Microsoft, сертифицированный XML находится на сайте, не связанном с нашей основной учетной записью разработчика, и не может опубликовать его в магазине Microsoft. применение.

0
ответ дан Simon Carter 26 August 2018 в 19:06
поделиться

Я только что прошел через этот процесс, и я добавлю некоторые лакомые кусочки информации.

1) Получите EV. Это стоит того. В следующий раз, когда вы обновите сертификаты, перейдите на сертификат EV. Цена составляет около 100 долларов США в год. Сертификаты EV считаются более безопасными, потому что их сложно воровать. Когда вы будете выданы вам, вам будет выдано аппаратное токеновое устройство для завершения знака. К сожалению, окончательный знак несовместим с автоматическими сборками.

Это не так страшно, как кажется. Они предоставят вам второй сертификат для подписи ваших исполняемых файлов (внутри установщика), которые по-прежнему совместимы с автоматизацией. Подпись в установщике должна быть подписана вместе с аппаратным токеном.

2) Если вы не хотите получать сертификат EV, вам нужна репутация. Если вы обновляете, Microsoft переведет репутацию из вашего старого сертификата на новый. Вы должны обратиться в службу технической поддержки MSDN, и примерно через неделю это будет сделано. Я отправил своих старых и новых инсталляторов - со старыми и новыми сертификатами - и они исправили это.

3) Если это ваш первый сертификат, вы застряли с SmartScreen, пока не получите репутацию. Вероятно, вы должны получить подтверждение своего приложения через sysdev.microsoft.com. Но на самом деле не известно, сколько загрузок вам нужно, прежде чем вы получите положительную репутацию у Microsoft.

Это мой опыт.

10
ответ дан Todd 26 August 2018 в 19:06
поделиться

Я искал какое-то время, поэтому я поделюсь тем, что нашел до сих пор.

Я не нашел никакой документации об этой функции в Windows 8 от Microsoft, но я могу просто искать не в тех местах.

Большинство статей, которые я прочитал, обсуждают, что Фильтр SmartScreen работает следующим образом:

  • Перед запуском установщика или исполняемого файла, который был загружен, Windows 8 консультируется с базой данных.
  • База данных может сообщать, имеет ли эта программа были: объявлены как вредоносные / фишинг (и проверены сотрудниками Microsoft). используется / работает многими людьми.

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

некоторые источники: ( здесь ) ( здесь )

Информация, отправленная Microsoft, когда пользователь устанавливает программу, включает в себя IP-адрес, хэш установщик и цифровая подпись, и, возможно, имя файла приложения. ( см. здесь )

Сотрудники Microsoft имели бы прямой доступ к базе данных для добавления и маркировки всех приложений Microsoft.

Возможно, Microsoft установила способ предварительной сертификации вашего установщика с ними, если нет, вам просто нужно подождать, пока достаточное количество людей запустит программу установки. (но не уверен, сколько это будет).

14
ответ дан Xantix 26 August 2018 в 19:06
поделиться

Поскольку Windows 8.1 отсутствует.

  • Microsoft дезактивировала все сертификаты подписи стандартного кода, которым можно доверять, когда вы загружаете их через интернет на свой компьютер и пытаетесь их установить, но приложение «Стандартные сертификаты подписи кода» работает, если вы распространяете приложение через USB или CD-ROM.
  • Не используйте signtool.exe для проверки (signtool.exe verify /pa mysetup.exe покажет успех, но он не сработает, когда другие пользователи загрузят его и попытается установить всплывающее окно SmartScreen)

Использовать набор сертификатов приложений Windows (WACK)

enter image description here [/g2]

  • Настоящие стандартные сертификаты подписи кода мертвы. Если у вас есть стандартный сертификат подписи кода, он не будет работать более надежно, как в прошлом, даже несмотря на то, что комплект сертификации приложений Windows (WACK) показывает PASS с WARNING, не означает, что его 100% подтверждают успех

enter image description here [/g3]

Вам необходимо приобрести сертификат EV ( https://www.globalsign.com/en/code-signing/ )

Итак, чтобы быть на 100% успешным, следуйте за ложкой:

Шаг 1: перейдите к https://sysdev.microsoft.com и войдите в систему

a) Создайте учетную запись компании> next

b) Загрузите файл winqual.exe, который является zip-файлом, предоставленным Microsoft, теперь подпишите winqual.exe со стандартным сертификатом или сертификатом EV, а затем нажмите рядом с загрузкой файла для проверки.

В моем случае это не получилось, потому что у меня есть стандартный сертификат, который Microsoft перестает разрешать больше. Итак, все, что вам нужно сделать, это купить лицензию EV еще раз, когда вы ввернуты, и можете потратить свою жизнь на решение этой проблемы без каких-либо подсказок.

enter image description here [/g4]

5
ответ дан YumYumYum 26 August 2018 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: