C++ 具有继承句柄的Duplicatehandle
我有以下流程:C++ 具有继承句柄的Duplicatehandle,c++,winapi,C++,Winapi,我有以下流程: 过程A: 创建用户令牌 创建挂起的进程 使用DuplicateHandle复制在上述步骤中创建的usertoken,并将bInherithandle传递为true 恢复子进程 将duplicatehandle发送到子进程 子进程B: 接收父进程发送的句柄并将其存储为句柄(全局变量) !!handle显示了handle和!dumptoken转储所有SID信息。所以句柄是有效的 使用bInheritHandle=true调用createprocess 子进程C:(由B生成)
- 创建用户令牌
- 创建挂起的进程
- 使用DuplicateHandle复制在上述步骤中创建的usertoken,并将bInherithandle传递为true
- 恢复子进程
- 将duplicatehandle发送到子进程
- 接收父进程发送的句柄并将其存储为句柄(全局变量)
- !!handle显示了handle和!dumptoken转储所有SID信息。所以句柄是有效的
- 使用bInheritHandle=true调用createprocess
- 我看不到你的把手!处理
- 如果我尝试!处理或!具有来自B的特定句柄值的lsaexts.dumptoken出现错误,表明其无效
根据MSDN文档,如果进程是使用设置为true的binheritedhandles生成的,那么子进程应该能够使用父进程中的每个句柄,该父进程是在其创建过程中使用设置为true的binheritedhandles创建的。您确实将句柄值“发送”给进程C,是吗?是,在创建进程C时将句柄值从B添加到环境块,子进程C从环境变量读取句柄值。但该句柄值在子进程C中无效。问题是A在启动B后创建可继承句柄,因此B首先不应该有句柄的副本。看起来OP在SO上不再活动了,所以我投票决定结束。