如何从应用程序 A 生成线程 T ,以便该应用程序A的用户 U1 (像我一样)但是线程T的用户是 U2 (像超级用户一样)?
由于
答案 0 :(得分:4)
查看属性Thread.CurrentPrincipal的示例代码:
http://msdn.microsoft.com/en-us/library/system.threading.thread.currentprincipal.aspx
答案 1 :(得分:1)
你需要在线程上调用WindowsIdentity.Impersonate()。它是 使用P / Invoke的极少数.NET类方法之一,LogonUser()是获取模拟令牌所必需的。它在链接的MSDN文章中显示的代码示例中有详细描述。
答案 2 :(得分:0)
虽然不是直接重复,但我认为this question可能是你想要的。另一方面,您是否需要启动模拟线程?我不知道UAC(用户帐户控制)的效果如何。从这个角度来看,UAC COM elevation也可能是一个有趣的读物,因为您可以创建一个提升的COM对象,并且可以在.NET中编写COM对象。
如果您真正想要的是以管理员身份执行某些代码,那么您将需要采用第二种方法,并让用户帐户控制处理剩下的工作。使Vista和7(以及未来)变得简单,但在XP上运行可能会使事情变得更复杂(或者需要以管理员身份运行整个应用程序)。