C# 向具有权限的用户模拟时解锁用户

C# 向具有权限的用户模拟时解锁用户,c#,windows,impersonation,C#,Windows,Impersonation,我试图解锁一个用户,同时模拟一个在active directory中具有权限的用户来解锁sepcific组中的用户 我正在使用advapi32.dll中的LogonUser登录用户,在模拟并使用{}之后,我正在打印WindowsIdentity.GetCurrent().Name-它不显示计算机的名称,而是显示我试图模拟的用户的名称-这意味着模拟成功(?) 然后,我在UserPrincipal中使用UnlockAccount方法来显示我想要解锁的用户-我得到一个奇怪的错误,说“发生了操作错误”-

我试图解锁一个用户,同时模拟一个在active directory中具有权限的用户来解锁sepcific组中的用户

我正在使用
advapi32.dll中的
LogonUser
登录用户,在模拟并使用{}之后,我正在打印
WindowsIdentity.GetCurrent().Name
-它不显示计算机的名称,而是显示我试图模拟的用户的名称-这意味着模拟成功(?)

然后,我在
UserPrincipal
中使用
UnlockAccount
方法来显示我想要解锁的用户-我得到一个奇怪的错误,说“发生了操作错误”-没有内部异常可以帮助我跟踪真正的错误


我根据我在这里的一个问题中看到的一个解决方案创建了一个类,它使用logonuser方法管理模拟以及它需要的东西。主要代码如下所示:

using (Impersonation mp = Impersonation.LogonUser(username, domain, pass, 
       LogonType.Network))
{
    WindowsIdentity identity = new WindowsIdentity(Impersonation.UserToken);
    WindowsImpersonationContext context = identity.Impersonate();
    Console.WriteLine("Logged in with : " +
                      WindowsIdentity.GetCurrrent().Name);
    // To do is the method that unlocks the user - get as parameter
    // the UserPrincipal Object to unlock
    bSuccess = toDo(uspUsserPrinc);
}

有人能识别出问题吗?

请将其标记为Windows,以及您正在使用的任何编程语言。另外,这堵文字墙对读者来说也不是很有吸引力。我告诉过你,在代码中穿鞋有点棘手,我将tag@JonathonReinhart我试图稍微整理一下问题+更新了标记。我不确定Active Directory API是否支持模拟。您可能需要以特权用户的身份启动子流程。@HarryJohn您知道我该怎么做吗?