Приложения ClickOnce и брандмауэр Windows - PullRequest
15 голосов
/ 29 сентября 2010

Мне кажется, что приложения ClickOnce не будут работать гладко с Брандмауэр Windows .

Я успешно использую развертывания ClickOnce в течение двух лет. Это стало камнем преткновения, теперь предприятие обновилось до Windows 7. Конфигурация каждого пользователя изменилась:

  • Брандмауэр Windows включен на компьютерах каждого пользователя
  • Пользователи не имеют прав администратора на своих машинах.

Вот как работает ClickOnce: Каждый раз, когда приложение ClickOnce обновляется, исполняемый файл копируется в новый каталог. Этот каталог имеет имя, сгенерированное машиной. (Например, он может развернуться в «C: \ Users \ andrew.shepherd \ AppData \ Local \ Apps \ 2.0 \ GTTG5EJB.AVG \ jc69hir.e45 \ watershedclient.exe»).

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

Проблема в том, что брандмауэр Windows сохраняет запись приложения в виде полного пути к файлу. Каждый раз, когда приложение ClickOnce обновляется, оно устанавливается в другой каталог. Поэтому брандмауэр Windows рассматривает его как совершенно новое приложение. Теперь администратор должен настроить брандмауэр для этого обновления для каждой машины, на которой оно обновлено. Это эффективно устраняет всю причину, по которой мы используем технологию ClickOnce.

Это было помечено как проблема в 2005 году, и Microsoft признала проблему и признала, что решения не было.

Устранена ли эта проблема?

1 Ответ

3 голосов
/ 15 февраля 2013

Проблема в том, что брандмауэр Windows сохраняет запись приложения в виде полного пути к файлу.Каждый раз, когда приложение ClickOnce обновляется, оно устанавливается в другой каталог.Поэтому брандмауэр Windows рассматривает его как совершенно новое приложение.

Один из подходов заключается в том, чтобы изменить имя правила таким образом, чтобы оно указывало только имя EXE-файла, а не полный путь.Например, мое локально развернутое приложение «Hello World» было установлено по этому пути с помощью ClickOnce:

C:\Users\jdoe\AppData\Local\Apps\2.0\BNYJV8NM.JT8\DGEMYJV2.ZN7\hell..tion_32be098505965508_0001.0000_ad51d60d7593998b\HelloWorld.exe

, и можно использовать правило брандмауэра, которое применяется только к «HelloWorld.exe».Однако это создает дыру в безопасности, поскольку правило применяется к любому приложению с таким именем.Мы можем немного уточнить правило, указав некоторые пути:

%LOCALAPPDATA%\Apps\2.0\BNYJV8NM.JT8\DGEMYJV2.ZN7\*\HelloWorld.exe

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

...