3

我在一个基于 .NET 的项目上工作,该项目具有我们只希望管理员可以使用的某些功能。控制对这些功能的访问的方法使用PrincipalPermissionAttribute进行修饰,如下所示:

[PrincipalPermission(SecurityAction.Demand, Role=@"BUILTIN\Administrators")]
public static void RunAdminFeature()
{
    // code here
}

我们的许多用户都是其系统上的本地管理员,但我们发现他们仍然必须右键单击应用程序图标并选择“以管理员身份运行”选项才能使用这些功能。

从这里的问题和答案来看,这似乎是 Windows 7 上的预期行为。如果是这样,那么看起来像这里描述的修改应用程序快捷方式可能是预期的解决方案。如果是这样的话,那就这样吧。

我的问题有两个。

  1. 我是否以编程方式做正确的事情?属性方法是否正确?
  2. 是否有一种编程方式来实现对某些功能的受限访问,这些功能也允许本地管理员运行应用程序而不需要他们明确地“以管理员身份运行”?
4

1 回答 1

1

1 属性方法是可以的。您只需要正确处理安全异常(例如,提供以管理员身份重新启动应用程序)。

2 在您的应用程序中隐藏管理界面,以便普通用户可以使用,除非您在某处添加“上帝模式”按钮以在提升模式下启用管理界面。例如,Windows 任务管理器需要提升才能查看所有用户的进程。

有关自我提升的示例代码,请访问如何在 UAC 下将应用程序自我提升到高权限级别

于 2013-07-02T22:19:50.843 回答