【问题标题】:Always run as admin after displaying UAC once? [duplicate]显示一次 UAC 后总是以管理员身份运行? [复制]
【发布时间】:2014-08-08 01:31:06
【问题描述】:

我有一个 C# 应用程序,它需要某些组件的管理员权限,所以我想出了使用 level="requireAdministrator" 等的应用程序清单方式。这行得通,但是现在每次启动应用程序时,UAC 都会询问,这对我们的客户来说真的很烦人。有没有办法让这个弹出窗口只在第一次启动时出现?还是在安装?或者得到一些令牌来使用?还是另辟蹊径?希望这与代码足够相关。谢谢

【问题讨论】:

  • 这可能很烦人,但以管理员身份静默运行并不是一个好主意。
  • 据我所知,这是 UAC 的“功能”。除非您禁用用户帐户控制,否则您无法绕过它。
  • 应该是这样的。考虑一下如果您授予 cmd.exe 超级用户权限一次,系统安全性会发生什么 - 以后任何人都可以使用它来重新获得这些权限,而不会提示您输入管理员密码。
  • 你也不能按需提升:How to elevate privileges only when required?.
  • 我认为可能有一种方法可以只使用一个 UAC 弹出窗口(第一次启动或安装)。这怎么会有安全风险?

标签: c# windows admin uac


【解决方案1】:

没有。您所能做的就是编写不需要管理员权限的应用程序(您到底在做什么?)。通常,这可以通过使用正确的位置来存储您的数据(提示:它不是您的 Program Files 文件夹),通过更改一些文件的权限作为安装程序的最终任务,或者通过安装作为服务运行的配套应用程序(在适当的凭据下),您的主应用程序指示服务进行更改。

我最接近的方法是安装带有计划任务的应用程序。您将计划任务设置为以管理员身份运行,以确实需要特权的特定用户身份运行,并将运行任务的权限授予非特权用户。然后你可以给他们一个快捷方式来启动不需要 UAC 提示的任务。

【讨论】:

  • 感谢分享。这是一种非常聪明的方式来完成需要管理员权限的运行任务,而无需亲自到场输入凭据。
  • 我正在通过 WMI 框架使用 Win32_NetworkAdapterConfiguration 修改网络适配器设置。更改生效的唯一方法是以管理员身份运行应用程序。
  • 您可以创建一个单独的可执行文件来执行配置并将其作为提升的进程启动。
  • 这仍然需要用户在启动该进程时单击 UAC 提示,这是每次
  • @user3112658 听起来您正在解决错误级别的问题。每次应用程序启动时,您的代码到底在做什么?不能在系统或域范围内设置,例如通过组策略吗?
猜你喜欢
  • 2011-01-15
  • 2013-09-06
  • 2011-01-26
  • 2011-12-29
  • 2019-07-26
  • 1970-01-01
  • 2012-11-22
  • 2023-04-07
相关资源
最近更新 更多