Приложения ClickOnce и брандмауэр Windows

Мне кажется, что приложения 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

Проблема заключается в том, что брандмауэр 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

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