【发布时间】:2012-02-29 21:39:13
【问题描述】:
我有一个 ClickOnce 应用程序需要执行 regasm,以注册它刚刚更新的程序集。
如果 UAC 关闭,它可以正常工作。但是,如果打开 UAC,regsam 的退出代码是 100。如果我在 cmd 提示符下运行相同的命令,它会失败并显示有关需要管理员权限的消息。如果我在打开 cmd 提示符时使用 run as admin 选项,它会成功。
我尝试在清单中将asInvoker 更改为highestAvailable,这在本地工作,但ClickOnce 拒绝以这种方式发布它。我尝试为 RegistryPermission 添加命令式权限需求,但无济于事。我试过设置
ProcessStartInfo.verb = "runas"
and .UseShellExecute = True
但还是没有爱!
我已经阅读了大量有关 CAS、UAC 和 ClickOnce 的内容...我看到一些关于 UAC 与 ClickOnce 梦想不一致的内容(这让我觉得完全是 BS,但无论如何)所以我想我的问题是,我想要做的甚至可能吗?如果有,怎么做?
其余的只是背景信息,并不严格相关:令人发指的是,项目已经完成,除了这个问题!
该项目的目的是自动更新 Outlook 的“共享”插件 (IExtensibility2)。由于我们选择退出 VSTO,因此我们无法使用本机 ClickOnce 支持,因此我创建了一个 ClickOnce 应用程序,我们将更新后的 DLL 作为资源嵌入其中。它在启动时执行,因此当新版本的 ClickOnce 应用程序可用时,它会自动下载;当它执行时,它会将安装的版本与嵌入的副本的版本进行比较,并提示用户其嵌入的版本是否较新。希望我们能够利用 ClickOnce 而不是自己推出(这是我们为旧版 VB6 版本所做的)。
【问题讨论】: