【问题标题】:Getting elevated permissions in code在代码中获得提升的权限
【发布时间】:2012-07-27 07:32:40
【问题描述】:

控制台应用程序在域中的服务器上运行,其任务是删除不再活动的用户的一些家庭区域。

帐户在帐户的上下文下运行,该帐户也是每个存储服务器上本地管理员组的成员,该帐户对相关文件夹具有“完全控制”访问权限。

这在一堆旧服务器上效果很好,但在 Windows 2008 上会遇到问题。在这些服务器上,为“本地管理员”组启用了“管理员批准模式”。

例如,如果我右键单击一个文件夹并尝试访问属性/安全性(使用相同的服务帐户),我会收到以下提示:

我可以按继续,然后继续使用完全控制权限。如果我在删除文件时也这样做,事情就会像预期的那样工作。

在我看来,有两种可能的解决方案:

  1. 删除了“管理员审批模式”。根据这里的安全人员,这不是一个可行的选择。
  2. 控制台应用可以以某种方式执行相当于按“继续”并继续的代码。

是选项号。 2 可能吗?如果是这样,该代码会是什么样子?或者我需要进一步研究哪些关键概念才能找到?

【问题讨论】:

    标签: c# .net security windows-server-2008 windows-server-2008-r2


    【解决方案1】:

    我想您可以将应用程序设置为以管理员身份运行。右键单击应用程序 exe 文件,选择 PropertiesCompatibility 选项卡并选中 Run this program as administrator 复选框(选项的名称可以不同,我的 Windows 是另一种语言)。

    如果您希望应用程序自己请求提升的权限,您可以在 ma​​nifest 文件中进行修改,如本文所述:http://www.codeproject.com/Articles/105506/Getting-Elevated-Privileges-on-Demand-using-C。它应该使应用程序请求管理员权限(因此应该出现权限提示),但我想您仍然必须单击 Continue 按钮(这就是 UAC 的工作原理)。

    还请考虑 Alex 在他的回答中写的内容,也许您应该与 IT 人员交谈以适当地设置权限。

    【讨论】:

      【解决方案2】:

      据我所知,应用程序不能只是“绕过”Windows 的安全性。

      我会让 IT 在服务器上设置一个本地“超级管理员”帐户,以便仅允许该特定用户绕过所有安全措施,以便让计划的应用程序正常运行。这就是我们在我们的服务器上所做的,这些帐户被锁定了,但它们只有足够的权限让预定的任务毫无问题地运行。我不知道操作方法(我们的 IT 部门负责处理),但我认为 IT 人员会知道该怎么做。

      【讨论】:

        【解决方案3】:

        感谢您的建议。

        BY DESIGN 没有解决方案,所以我将其作为答案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-04
          • 1970-01-01
          • 2014-04-26
          • 1970-01-01
          • 2022-12-01
          • 2011-02-25
          • 2015-01-11
          • 2011-08-27
          相关资源
          最近更新 更多