模拟和CreateProcess

时间:2011-10-11 19:48:07

标签: c++ windows security process acl

该文档声明CreateProcess创建在调用进程的安全上下文下运行的进程,而不是当前模拟令牌的安全上下文。这是否意味着无论是否假冒,新流程的许可都是相同的?

我有以下代码因ACCESS_DENIED错误而失败:

  1. 流程A在管理员下运行;
  2. 进程A冒充普通用户“test”;
  3. 进程A通过调用CreateProcess;
  4. 启动新进程B.
  5. 进程B调用OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,..);
  6. 步骤4因ACCESS_DENIED错误(5)而失败。我检查过程B在管理员下作为进程A运行。为什么它在与进程A相同的用户上下文中运行时会失败?

1 个答案:

答案 0 :(得分:2)

正如评论者所说,你想要CreateProcessAsUser。您可能会在MSDN上找到以下示例代码,我几年前成功使用它:http://support.microsoft.com/kb/165194