Как избежать всплывающего окна брандмауэра Windows - PullRequest
9 голосов
/ 24 августа 2010

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

Это происходит с множеством других приложений (Spotify, чтобы привести один пример), но мы хотели бы предотвратить появление этих всплывающих окон, поскольку они могут быть немного проблематичными для наших пользователей. Некоторые приложения (MSN Messenger, GoogeTalk) работают, не заставляя брандмауэр предупреждать пользователя, и мы хотели бы сделать то же самое.

Мы успешно сделали это в Windows XP, когда наш установщик записал соответствующие ключи реестра по адресу:

HKLM \ SYSTEM \ ControlSet001 \ Services \ SharedAccess \ Параметры \ FirewallPolicy \ StandardProfile \ AuthorizedApplications \ Список

Однако это не имеет такого же эффекта в Windows 7 - всплывающие окна брандмауэра все еще имеют место.

Есть идеи, как мы можем это сделать? (Наши установщики и программное обеспечение имеют цифровую подпись.)

Спасибо Том Дэвис

Ответы [ 3 ]

8 голосов
/ 25 августа 2010

Вы можете добавить исключения в брандмауэр Windows, выделив netsh , утилиту, встроенную в Windows, но эта утилита работает по-разному в Windows XP и Windows 7. Вот команды, которые я использовал:

Windows XP:

добавить: netsh firewall add allowedprogram mode=ENABLE profile=ALL name=[exception name] program=[program path]

удалить: netsh firewall delete allowedprogram profile=ALL program=[program path]

Windows 7:

добавить: netsh advfirewall firewall add rule action=allow profile=any protocol=any enable=yes direction=[in|out] name=[exception name] program=[program path]

удалить: advfirewall firewall delete rule profile=any name=[exception name]

6 голосов
/ 25 августа 2010

Я на самом деле не рекомендую делать это установщиком по нескольким причинам:

  • Существует несколько программных брандмауэров там; вы не можете кодировать и тестировать для всех них.

  • Некоторые (например, встроенные окна брандмауэр) есть API, которые не будут позволяют настроить порт исключения, когда FW отключен.
    Если пользователь позже включает FW, вы снова в шланге.

  • Там могут быть внешние брандмауэры это все еще тебя.

Вместо этого я предпочитаю приложить усилия для документирования, чтобы пользователи и администраторы были полностью осведомлены о требованиях к сети. Мне когда-то приходилось гуглить веб-сайт Apple, чтобы выяснить, какие порты нужны iTunes, и, клянусь Богу, их было очень трудно найти, поскольку они пытались смягчить все для потребителей.

Однако, если вы хотите сделать все возможное для установки, WiX имеет расширение Custom Action для взаимодействия с брандмауэром, а не для написания собственного Custom Action. Даже если вы используете другой инструмент, например InstallShield, вы можете обернуть это поведение в модуле слияния WiX, а затем использовать его в качестве основного инструмента.

Вы можете прочитать об этом здесь:

Блог радости настройки

и

Документация WiX

1 голос
/ 24 августа 2010

В вашем установщике (то есть в качестве администратора с повышенными правами) вам нужно написать код для доступа к API брандмауэра Windows и добавить свое приложение в качестве исключения

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