Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模拟和创建过程_C++_Windows_Security_Process_Acl - Fatal编程技术网

C++ 模拟和创建过程

C++ 模拟和创建过程,c++,windows,security,process,acl,C++,Windows,Security,Process,Acl,文档状态CreateProcess创建在调用进程的安全上下文(而不是当前模拟令牌的安全上下文)下运行的进程。这是否意味着无论是否模拟,新进程的权限都是相同的 我有以下代码失败,出现访问被拒绝错误: 进程A在管理员下运行 进程A模拟正常用户“测试” 流程A通过调用CreateProcess启动新流程B 进程B调用OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,…) 步骤4失败,出现访问被拒绝错误(5)。我检查了进程B是否在Administrator

文档状态CreateProcess创建在调用进程的安全上下文(而不是当前模拟令牌的安全上下文)下运行的进程。这是否意味着无论是否模拟,新进程的权限都是相同的

我有以下代码失败,出现访问被拒绝错误:

  • 进程A在管理员下运行
  • 进程A模拟正常用户“测试”
  • 流程A通过调用CreateProcess启动新流程B
  • 进程B调用OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,…)
    步骤4失败,出现访问被拒绝错误(5)。我检查了进程B是否在Administrator下作为进程A运行。为什么它在与进程A相同的用户上下文下运行时会失败?

    正如评论员所说,您需要CreateProcessAsUser。您可能会发现MSDN上的以下示例代码很有帮助,几年前我成功地使用了它:

    我猜您确实需要使用CreateProcessAsUser()。@Hans听起来Ranta希望新进程使用调用进程的令牌,而不是模拟令牌。如果直接启动进程B会发生什么?