我有以下流程:
- 流程A:
- 创建一个usertoken。
- 创建暂停的流程
- 使用DuplicateHandle复制上面步骤中创建的usertoken,并将bInherithandle传递给true。
- 恢复子流程
- 将重复句柄发送到子进程
- 儿童程序B:
- 接收父进程发送的句柄并将其存储为句柄(全局变量)。
- !handle显示句柄,并且!lsaexts.dumptoken转储所有SID信息。因此句柄有效。
- 使用bInheritHandle = true
调用createprocess
- 子过程C :(由B产生)
- 我没有看到句柄!handle
- 如果我尝试!使用来自B的特定句柄值的句柄或!lsaexts.dumptoken我得到错误,表示其无效
醇>
我在这里做错了什么?
根据MSDN文档,如果使用设置为true的binheritedhandles生成进程,则子进程应该能够使用父进程中的每个句柄,该句柄是在创建时将binheritedhandles设置为true而创建的。