0

在模拟客户端的服务中(使用ImpersonateNamedPipeClient),我尝试调用 CreateProcessAsUser。可执行文件名是位于第三台计算机(既不是服务器,也不是连接到管道的客户端)上的 UNC 路径。

调用失败,错误代码为 5 (ACCES DENIED)。在服务器调用之前,我尝试使用WNetAddConnection2从客户端对客户端进行身份验证(在将被模拟的令牌的上下文中),ImpersonateNamedPipeClient但我仍然得到相同的错误。

为了获得对可执行文件的访问权限,我如何验证被模拟的帐户(鉴于服务器仅获得模拟令牌的事实)?

4

2 回答 2

0

CreateProcessAsUser() 需要一个主令牌,而不是模拟令牌。您可以使用 DuplicateTokenEx() 从模拟令牌中获取主令牌。CreateProcessAsUser() 的文档甚至说了这么多。

于 2009-09-02T00:35:12.527 回答
0

我的 Win32 相当生锈,所以这可能是在黑暗中拍摄,但是您是否尝试过使用该CreateProcessAsUser功能而不是CreateProcess? 根据MSDN 文档,它将在受限令牌上运行。如果我没记错的话,一个模拟令牌就足够了。

希望有帮助。

于 2009-08-28T16:21:33.527 回答