似乎特权的提升是大多数开发人员经常遇到的问题,因为大多数时候他们根本没有特权。我是这样做的,但我正在与一个庞大的后台工作者例程作斗争,我正在努力使我的代码保持在将要使用它的类的本地。鉴于我的后台工作人员在“RunWorkerCompleted”处理程序方法中完成了大量的代码和引用,很难接受它作为可行的替代方法:
HOMEWORK 1:
HOMEWORK 2:
HOMEWORK 3:
我的后台工作人员对MainForm类的依赖太多了,我无法考虑将整个解决方案发送到一个带有“Admin”privs的单独进程中。这涉及太多的切碎和改变。
Omega Coder:
System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal, IPrincipal, IIdentity);
显然,不存在这样的过载,但过载的作用是非常明显的。
问题1:
更新1:
问题2:
一旦'ManagersOnly'方法返回,权限是否被丢弃?它是否适用于方法的生命周期?
System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.NoPrincipal);
*更新2:*
这是很困难的,因为在我的win7pro-dev机器上,我可以测试和运行任何东西,但是当我在一台简单的win7home笔记本电脑上测试一些代码时,我发现权限被拒绝了。这就引出了一个问题:将PrincipalPolicy更改为“WindowsPrincipal”并不适用于所有vista和Win7用户,因为许多用户甚至不属于admin用户组。所以这个选项没用。。。坐在这台小型笔记本电脑上,这显然不是我需要的解决方案。
问题4:如何在代码中以编程和临时方式模拟管理员?