一尘不染

我可以在几个实例中关闭模拟吗

c#

我有一个贯穿整个模拟过程的应用。但是,当用户以管理员身份登录时,需要执行一些操作才能写入服务器本身。现在,如果这些用户没有实际服务器上的权限(有些则没有),则不会让他们写。

我想做的只是关闭几个命令的模拟。

有没有办法做这样的事情?

using(HostingEnvironment.Impersonate.Off())
  //I know this isn't a command, but you get the idea?

谢谢。


阅读 198

收藏
2020-05-19

共1个答案

一尘不染

确保应用程序池具有所需的正确权限。

然后,当您想恢复到应用程序池标识时,请运行以下命令:

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}
2020-05-19