允许本地管理员运行应用程序而无需“以管理员身份运行”

时间:2013-07-02 16:39:07

标签: c# windows-7 permissions admin uac

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

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

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

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

我的问题是双重的。

  1. 我是否以编程方式正确行事?属性是否正确?
  2. 是否有一种程序化方法可以实现对某些功能的限制访问,这些功能还允许本地管理员运行应用程序而无需明确“以管理员身份运行”?

1 个答案:

答案 0 :(得分:1)

1属性方法没问题。您只需要正确处理安全性异常(例如以管理员身份重新启动应用程序)。

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

有关自我提升的示例代码,请访问How to self-elevate an application to a high privilege level under UAC