如果在ImpersonateSelf()失败后RevertToSelf()会致命吗?

MSDN表示,如果RevertToSelf()失败,程序应该立即终止,因为否则它会继续以被模拟的客户端名称运行,这是不合适的。 现在假设我这样做

ImpersonateSelf( SecurityImpersonation );

并且调用成功,那么我调用RevertToSelf() ,后者失败。 线程继续以当前进程的权限运行。 它也是非常糟糕的?


我喜欢你的问题,而MSDN对此并不清楚。

我看了Windows编程安全(Keith Brown)第112至117页ImpersonateSelf通过调用你所做的所有工作

  • OpenProcessToken
  • DuplicateTokenEx(... ... TokenImpersonation)
  • SetThreadToken
  • CloseHandle的
  • RevertToSelf只是一个呼叫

    SetThreadToken(0,0)
    

    传递两个空参数指示方法返回到前一个标记。 您不必处理模拟与主令牌和令牌访问权限。 电话会一直成功。

    如果您查看RpcRevertToSelf函数的错误代码,则会发现RPC相关的代码RpcRevertToSelf ,唯一的失败模式是如果您不模仿。

    我认为假定RevertToSelf (从与ImpersonateSelf相同的线程调用)总是会成功是安全的。

    链接地址: http://www.djcxy.com/p/53893.html

    上一篇: Is it fatal if RevertToSelf() after ImpersonateSelf() fails?

    下一篇: observable collections in Silverlight