CreateProcessWithUser 无法模拟用户,错误为 87、1349
在 Windows 2003 服务器上,从服务运行 createprocessasuser 失败,并出现错误 87,并且来自 WLEXECSERVER 的错误表明无法模拟用户。
在 Windows 2003 服务器 64 位上,从服务运行时,createprocessasuser 失败并出现错误 1349。
令牌是使用 OpenProcess -> 创建的。 OpenProcessToken(TOKEN_QUERY,TOKEN_DUPLICATE)-> DuplicateTokenEx(WITH GRANT_ALL、PrimaryToken、SecurityImpersonation)。
在 WIN7 和 2008 R2 上它可以正常工作,没有任何问题。
如果我使用 WTSQueryUserToken 获取令牌,它也可以正常工作。
有人知道为什么吗?
On a windows 2003 server, running from a service, createprocessasuser fails with error 87, and an error from WLEXECSERVER that says fails to impersonate user.
On a windows 2003 server 64 bit, running from a service, createprocessasuser fails with error 1349.
The token is created using OpenProcess -> OpenProcessToken(TOKEN_QUERY, TOKEN_DUPLICATE) -> DuplicateTokenEx (WITH GRANT_ALL, PrimaryToken, SecurityImpersonation).
On WIN7 and 2008 R2 it works fine with no problems.
If i take the token with WTSQueryUserToken, it works fine also.
Anyone has an idea why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Windows XP 上似乎也有同样的问题:
如果会话 ID 不为 0 并且没有用户登录,CreateProcessAsUser 将失败并显示错误 233 (0xE9)。此错误在 NT 6.0 及更高版本上已修复。
有一些解决方法可能会有所帮助:
https://groups.google.com/d /msg/microsoft.public.win32.programmer.kernel/h72eJ7iMynE/zVgBe_aVj24J
https://github.com/zealotous/ultravnc/blob/master /winvnc/winvnc/service.cpp
看一下 CreateRemoteSessionProcess 函数。
It seems the same problem on Windows XP:
CreateProcessAsUser fails with error 233 (0xE9) if the session id is not 0 and if no user logged on. This bug is fixed on NT 6.0 and higher.
There are some workarounds which may help:
https://groups.google.com/d/msg/microsoft.public.win32.programmer.kernel/h72eJ7iMynE/zVgBe_aVj24J
https://github.com/zealotous/ultravnc/blob/master/winvnc/winvnc/service.cpp
Take a look on CreateRemoteSessionProcess function.