模拟和CreateProcess

文档状态CreateProcess创build一个进程在调用进程的安全上下文下运行,而不是当前模拟令牌的安全上下文。 这是否意味着不pipe冒充与否,新stream程的许可都是相同的?

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

  1. 进程A在pipe理员下运行;
  2. 进程A模拟一个普通用户“testing”;
  3. 进程A通过调用CreateProcess来启动一个新的进程B;
  4. 进程B调用OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,..);

步骤4失败,出现ACCESS_DENIED错误(5)。 我检查过程B在pipe理员下作为进程A运行。为什么当它在进程A的相同用户上下文下运行时会失败?

作为一个评论者说,你想要CreateProcessAsUser。 您可能会发现MSDN上的以下示例代码有用,几年前我用它成功: http : //support.microsoft.com/kb/165194