Невозможно вызвать ShellExecute "runas" из приложения ClickOnce - PullRequest
2 голосов
/ 01 марта 2012

У меня есть приложение 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).

1 Ответ

1 голос
/ 02 марта 2012

Если вам нужны не только привилегии для песочницы, лучше выбрать приложения с полным доверием. В .Net 4.0 все CAS устарели. Приложение OneTrust «щелкнуть один раз» в .Net 4.0 может делать практически все, что угодно.

...