似乎特权提升似乎是大多数开发人员与大多数时间他们根本没有的战斗常见的事情。我为一个人做了,但是正在与一个大规模的Background Worker例程打架,我试图让我的代码保持本地的类将使用它。由于代码量,并引用我的后台工作使得一旦它完成了“RunWorkerCompleted”处理方法中它证明艰难的啮合接受这是一个可行的替代方案:如何模拟WinForms,C#App的Windows内置管理员角色?
对我的MainForm有太多的依赖由我的后台工作人员为我考虑将整个解决方案运送到具有'管理员'权限的独立流程中。这涉及到太多的斩断和改变。
已经读入CAS为70-536考试,我在这上面的例子中知道的大部分条款,但我没有看到如何以及为什么它的工作原理?有人可以解释为什么许可授予'ManagersOnly'方法吗?因为一旦PrincipalPolicy更改为WindowsPrincipal,接下来的两个步骤看起来像普通的对象实例化语句构成的东西,如:
System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal, IPrincipal, IIdentity);
显然,没有这样的超载存在,但其在超负荷做什么很清楚。
问题1: OmegaCoders示例如何实现这种效果?因为我的用户是'BUILTIN \ Administrators'组的一部分,所以它确实可以正常工作。我正在寻找一篇基于文献的答案,所以请尽可能详细地描述你的感受。
更新1:
问题2:我怎么会恢复的PrincipalPolicy回到它以前......一旦该方法返回我不需要PrincipalPolicy仍然被设置为' WindowsPrincipal“???因此,该应用程序可以按照我的意图继续作为低权限用户运行。
问题3:一旦'ManagersOnly'方法返回,权限是否被丢弃?它是否适用于方法的生命周期?
System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.NoPrincipal);
*更新2:*
这被证明是困难的,因为我的Win7专业版的开发机器上我可以测试并运行任何东西,但是当我试图测试出一个简单的Win7家庭笔记本电脑的一些代码我发现权限被拒绝。哪些问题将PrincipalPolicy更改为“WindowsPrincipal”不适用于所有vista和Win7用户,因为许多用户甚至不会成为管理员用户组的一部分。所以这个选项是没用的......坐在这台小型笔记本电脑上它变得非常明显,这不是我需要的解决方案。
忽略先前的Qs的 - 我自己researh我已经做了,他们是不可行的。
问题4:如何在代码中模拟管理员以编程方式和临时模式?