Ответ 1
Я нашел возможное решение самостоятельно в этой статье MSDN: ClickOnce Deployment and Security.
Аутентификация на основе форм ASP.NET
Если вы хотите контролировать, какие развертывания доступны каждому пользователю, вы должны не включать анонимный доступ к приложениям ClickOnce, развернутым на веб-сервере. Скорее, вы включили бы пользователей для доступа к установкам, которые вы установили, на основе идентификатора пользователя (с использованием проверки подлинности Windows NT).
При развертывании в среде без проверки подлинности Windows NT решение может состоять в том, чтобы попытаться использовать ASP.NET проверку подлинности на основе форм для аутентификации пользователя. Однако ClickOnce не поддерживает проверку подлинности на основе форм, поскольку использует постоянные файлы cookie; они представляют угрозу безопасности, поскольку они находятся в кеше Internet Explorer и могут быть взломаны. Поэтому, если вы развертываете приложения ClickOnce, любой сценарий проверки подлинности, кроме аутентификации Windows NT, не поддерживается.
Передача аргументов
Дополнительное соображение безопасности возникает, если вам нужно передать аргументы в приложение ClickOnce. ClickOnce позволяет разработчикам поставлять строку запроса для приложений, развернутых через Интернет. Строка запроса принимает форму пары пар имя-значение в конце URL-адреса, используемого для запуска приложения:
http://servername.adatum.com/WindowsApp1.application?username=joeuser
По умолчанию аргументы строки запроса отключены. Чтобы включить их, атрибут trustUrlParameters должен быть установлен в манифесте развертывания приложения. Это значение может быть установлено из Visual Studio и из файла MageUI.exe. Подробные инструкции по включению передачи строк запроса см. В разделе Как получить информацию о строках запроса в приложении ClickOnce.
Вы никогда не должны передавать аргументы, полученные через строку запроса, в базу данных или в командную строку без проверки аргументов, чтобы убедиться в их безопасности. Небезопасными аргументами являются те, которые содержат escape-символы базы данных или командной строки, которые могут позволить злоумышленнику манипулировать вашим приложением при выполнении произвольных команд.
Примечание. Аргументы строки запроса - это единственный способ передать аргументы приложению ClickOnce при запуске. Вы не можете передавать аргументы в приложение ClickOnce из командной строки.