我编写了一个ASP.NET 2.0 Web服务,该服务由Web应用程序使用,该应用程序从大型企业中新构建的win2k3服务器中获取配置数据。我正在使用kerberos委托和模拟来通过用户域管理员权限来询问刚刚构建的服务器。 Web池标识(IIS 6.0)在低权限服务帐户下运行。我让所有代表团的工作都正常。
我遇到的问题是我想以编程方式启动执行cmd行可执行文件并重定向输出的进程,所有这些都在被模拟的用户的上下文中。我知道该进程将在模拟线程的外部,因此最终将在工作进程标识下运行,这就是我收到“访问被拒绝”消息的原因。
我一直在阅读有关CreateProcessAsUser和createprocesswithlogonw API函数的内容,但我所看到的只是人们在其代码中明确说明用户名和密码的示例。这不是我可以做的事情,因为环境非常安全,所以我需要做的是无缝地获取模拟用户的身份,以及一些如何将其提供给一个函数,该函数将在正确的域管理员身份下创建流程反馈StdOuput。
这是否可以实现,如果是,如何实现?
答案 0 :(得分:0)
CreateProcessAsUser接受令牌。不是用户名和密码。毫无疑问,这些示例使用LogonUser,用户名和密码来获取令牌。
然而,你不需要那样做。如果您正在使用模拟,那么您就拥有了WindowsIdenity。只需在WindowsIdentity上使用token属性