调用WindowsIdentity.Impersonate后ERROR_NO_TOKEN()(ERR

2019-10-30 10:45发布

我使用@ MattJohnson的技术假冒在Windows 2008 R2域使用C#.NET的4.0新用户,如所描述这里 。 我设法登录的用户成功,并调用WindowsIdentity.Impersonate()静默的方式运行,返回显然有效的上下文。 然而,当我通过检查最后一个错误号Marshal.GetLastWin32Error()在此之后,我收到了价值1008又名ERROR_NO_TOKEN。

如果我让我的代码来看,它表现为新用户登录(即Environment.UserName返回新用户的名称),直到我处理的手柄; 但是,没有出现假冒的,因为我的代码的访问权限仍然是那些原有的用户。

我花了一段时间,谷歌搜索这件事,但我发现没有确凿的答案,为什么WindowsIdentity.Impersonate()可能导致ERROR_NO_TOKEN错误,或如何克服它。 有任何想法吗? 谢谢。

编辑 。 我只是发现了以下内容。 当我运行Visual Studio通常,如上所述我的代码的行为。 然而,当我运行Visual Studio作为管理员(即右键单击,以管理员身份运行),然后冒充完美的作品,但我仍然得到ERROR_NO_TOKEN Marshal.GetLastWin32Error() 我也可以忽略这个错误代码,因为模拟的工作,但我需要更高权限运行我的代码。 这不是奇怪?

文章来源: ERROR_NO_TOKEN after call to WindowsIdentity.Impersonate()