我使用@ 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()
我也可以忽略这个错误代码,因为模拟的工作,但我需要更高权限运行我的代码。 这不是奇怪?