gpt4 book ai didi

c - 如何从 JobObject 中分离进程

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:22 26 4
gpt4 key购买 nike

有没有办法从 JobObject 中分离一个进程?我的问题是,如果我使用 RunAs 创建一个新进程,比如 cmd.exe,那么它将自动分配给一个 JobObject。如果我想从这个 cmd 运行我的应用程序,它也会被分配给这个作业对象。问题从这里开始,因为我的应用程序会创建一个新的jobobject并创建一个新进程,然后将其分配给我的新JobObject,但是它无法关联,因为第一个以runas开头的cmd已经分配给了一个jobobject,并且所以我创建的新进程也分配给了这个作业对象。

所以我的问题是,如何从将自动创建的作业对象中分离第一个 cmd,或者我还能如何解决这个问题?

最佳答案

不使用 runas,考虑以标准用户身份运行父应用程序并使用 CreateProcessWithLogonW提升。

或者,您可以使用 psexec虽然它是为远程执行命令而设计的,但通常可以用来逃避您在本地计算机上的当前上下文。您可以使用 psexec 作为 runas 的替代:

psexec -i \\%COMPUTERNAME% -u adminuser cmd.exe

(系统会提示您输入密码)或者您可以使用 runas 然后

psexec -s -i \\%COMPUTERNAME% parent.exe

在本地系统上下文中运行 parent.exe。这将转义现有的作业对象,因为新进程是从系统服务启动的。

请注意,在 Vista 和更高版本中使用带有 -i 标志的 psexec 比较棘手,因为它更广泛地使用多个终端服务器 session ;在那种情况下,您最好坚持使用 runas。幸好你的问题只适用于 XP。 :-)

关于c - 如何从 JobObject 中分离进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13471611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com