【问题标题】:Compiling a click-once app that requires administrator?编译需要管理员的点击一次应用程序?
【发布时间】:2011-02-23 11:35:10
【问题描述】:

我的很多程序都需要能够将文件写入硬盘。当我第一次为 XP 制作这些程序时,它们运行良好。现在我对 UAC 不那么无知了(最近买了一台新笔记本电脑)。对于未来的客户......我注意到可能会出现很多烦人的错误消息......坦率地说,如果程序无法将数据写入硬盘驱动器或拇指驱动器它所在的...没有意义运行它....

我已多次尝试在清单中构建对管理员或用户访问权限的要求....我不确定是否可以解决问题...但失败了,因为单击一次具有安全功能防止我这样做。

我宁愿不必告诉我的客户如何通过编辑文件的属性来使程序以管理员身份运行...我宁愿有一个方便的弹出窗口,就像您看到的新程序一样Itunes 或 Filezilla 会显示它们是否与请求所需权限的 UAC 发生冲突。

我真的很想这样做,但收效甚微。

感谢任何可以解决这个严重问题的建议。

谢谢。

【问题讨论】:

  • 你能把他们收到的一些错误信息贴出来吗?
  • 我必须重新创建它们...我可以这样做,但是错误消息都说不允许访问硬盘驱动器...我不知道如果这足够了,那么我将重新创建一个示例错误消息。

标签: vb.net visual-studio-2010 clickonce uac


【解决方案1】:

首先,让我告诉您,ClickOnce 部署的设计目标是不需要管理权限。这转化为“运行 ClickOnce 应用程序时无法提升权限”。

当 Windows Vista 推出时,Microsoft 发布了关于在何处存储您希望能够更新的文件的指南。 NOTHING 应该放在 Program Files 中;他们通常推荐 LocalApplicationData 或独立存储。 Windows 7 也存在同样的问题。

那么您打算在哪里为您的客户写入数据?

【讨论】:

  • 这个程序是可移植的,这意味着它可以将数据存储在它安装到的任何位置。通常,我的客户会将其安装到程序文件中(出于熟悉),或者他们会将其安装到拇指驱动器上。当程序在程序文件中时,我注意到这个问题发生在我身上,我不记得在禁用 UAC 之前是否在桌面或拇指驱动器上测试过它。但是这个程序可能存在于硬盘上的任何地方,真的....
  • 如果要将应用程序存储在 Program Files 中,则不能使用 ClickOnce 部署。它不支持这一点。正如我所提到的 ClickOnce 的设计目标,它安装在用户配置文件下的混淆文件夹中,因此用户不能乱用它。另外,我建议您不要禁用 UAC,因为它确实有助于保护您的计算机安全,但这当然是您的选择。此外,对于 ClickOnce,您必须考虑要将数据存储在何处。我不存储我的部署文件,因为每个部署的版本都有新文件夹。
  • 另外一个注意事项——我写这篇博文是为了帮助人们存储他们的数据并且不会在更新之间丢失。它可能对你有帮助。 robindotnet.wordpress.com/2009/08/19/…
  • 我不知道为什么我会在更新之间丢失数据,但您可能使用了比我更复杂的数据存储方法....我只使用文本文件...我使用一个相当奇怪的设置,因为我讨厌 clickonce 安装程序的方式。我让部署安装了一个安装程序,该程序会通过我的安装过程,因此我可以显示用户许可协议和安装选项,让我满意。用户决定安装实际程序的位置,程序将数据存储在其目录位置。如果没有这个问题,它会很好地工作......
  • 每次用户安装更新时,它都会创建新文件夹并从那里运行。这就是我移动数据的原因——以确保我的数据不会被意外遗漏。我不明白为什么它对安装应用程序的用户很重要;无论如何,他不应该弄乱部署文件(顺便说一下,这已由 C/O 验证)。如果这对您来说真的很重要,则不能使用 ClickOnce 部署。它必须安装在用户配置文件 ClickOnce 缓存文件夹中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 2015-07-05
  • 2011-07-19
相关资源
最近更新 更多