什么是RevertToSelf()? - C#.net

时间:2010-12-21 12:17:42

标签: c# .net impersonation advapi32

我不明白。RevertToSelf()在.net应用程序中的作用。检查MSDN定义,它将定义读为

The RevertToSelf function terminates the impersonation of a client application.

当前用户上下文是否通过停止客户端的上下文而更改为sysadmin上下文?通过调用RevertToSelf(),我的代码将在sys admin模式下运行吗?

更新

好的,如果我在ASP.NET应用程序中调用RevertToSelf()会发生什么?让我们考虑一下我不会开始任何模仿。所以如果我调用RevertToSelf()它会恢复到应用程序池标识吗?

4 个答案:

答案 0 :(得分:8)

RevertToSelf将终止您已主动启用的任何模拟。您可以将应用程序设置为模拟任何用户帐户。除非您使用假冒,否则RevertToSelf无效。调用RevertToSelf只会使您的代码以管理员身份运行,如果应用程序最初是以管理员身份运行的,并且来自配置为模拟其他帐户的应用程序。

答案 1 :(得分:2)

几年前,我写了一个很小的IDisposable - 实现了一个名为Impersonator的类来自动模拟/恢复(几乎)。

也许如果你看一下,它会告诉你如何以及何时使用它?

答案 2 :(得分:0)

它会更改为在模拟之前运行应用程序的用户的上下文。系统管理员没有必要。在此处阅读更多内容:http://msdn.microsoft.com/en-us/library/aa376391(v=vs.85).aspx

答案 3 :(得分:0)

假设您拥有某个用户的凭据(即用户名和密码),您可以开始模拟并调用在模拟用户的上下文中执行的Win32 API。因此,您将获得您模拟的用户的访问权限,直到您调用RevertToSelf(),在这种情况下,您将恢复为最初启动该代码的用户的访问权限。