У меня есть приложение ClickOnce, которое должно выполнить regasm
, чтобы зарегистрировать сборку, которую он только что обновил.
Если UAC выключен, он работает нормально. Однако, если UAC включен, код выхода regsam
будет 100
. Если я запускаю ту же команду в командной строке cmd, она завершается с сообщением о необходимости прав администратора. Если я использую опцию запуска от имени администратора, когда открываю приглашение cmd, оно завершается успешно.
Я попытался изменить asInvoker
на максимально доступный в манифесте, который работает локально, но ClickOnce отказывается публиковать его таким образом. Я попытался добавить обязательное требование разрешений для RegistryPermission, но безрезультатно Я попытался установить
ProcessStartInfo.verb = "runas"
and .UseShellExecute = True
но все равно нет любви!
Я много читал о CAS, UAC и ClickOnce ... Я видел что-то о том, что UAC не соответствует мечте ClickOnce (которая кажется мне полной BS, но независимо), поэтому я думаю, что мой вопрос будет что я пытаюсь сделать даже возможно? И если да, то как?
Остальное - просто справочная информация, которая не имеет отношения к делу: отвратительная часть, проект завершен, за исключением этой проблемы!
Целью проекта является автоматическое обновление «разделяемой» надстройки (IExtensibility2
) для Outlook. Поскольку мы отказались от VSTO, мы не можем использовать встроенную поддержку ClickOnce, поэтому я создал приложение ClickOnce, в которое мы вставили обновленную DLL в качестве ресурса. Он запускается при запуске, поэтому при появлении новой версии приложения ClickOnce он автоматически загружается; при выполнении он сравнивает установленную версию с версией внедренной копии и запрашивает пользователя, является ли его встроенная версия более новой. Была надежда на то, что мы сможем использовать ClickOnce, а не использовать свой собственный (что мы и сделали для устаревшей версии VB6).