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
如何从JobObject分离进程_C_Windows - Fatal编程技术网

如何从JobObject分离进程

如何从JobObject分离进程,c,windows,C,Windows,有没有办法从JobObject分离进程? 我的问题是,如果我用RunAs创建一个新进程,比如cmd.exe,那么它将自动分配给一个JobObject。如果我想从这个cmd运行我的应用程序,它也会被分配给这个jobobject。问题从这里开始,因为我的应用程序将创建一个新的jobobject并创建一个新进程,然后将其分配给我的新jobobject,但它无法关联,因为以runas启动的第一个cmd已分配给jobobject,因此我创建的新进程也分配给这个jobobject 我的问题是,如何将第一个C

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


我的问题是,如何将第一个CMD从自动创建的JoBbDeB中分离出来,或者我怎样才能解决这个问题?

< P>而不是使用Runas,考虑将父应用程序运行为标准用户并使用它来提升.< /P> 或者,您也可以使用它,尽管它是为远程执行命令而设计的,但它通常有助于在本地计算机上脱离当前上下文。您可以使用psexec作为runas的替代:

psexec -i \\%COMPUTERNAME% -u adminuser cmd.exe
(系统将提示您输入密码)或者您可以使用runas,然后

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


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

>使用Runas,考虑将父应用程序运行为标准用户,并使用它来提升.< /P> 或者,您也可以使用它,尽管它是为远程执行命令而设计的,但它通常有助于在本地计算机上脱离当前上下文。您可以使用psexec作为runas的替代:

psexec -i \\%COMPUTERNAME% -u adminuser cmd.exe
(系统将提示您输入密码)或者您可以使用runas,然后

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


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

签出
CREATE\u breakout\u FROM\u JOB
flag()。但我不知道RunAs是否使用作业对象作为安全措施。如果是,它将禁用
JOB\u OBJECT\u LIMIT\u breakoff\u OK
且该标志将不起作用。此外,Windows 8似乎支持嵌套作业(),因此如果您的应用程序“仅限Windows 8”…)@atzz:不幸的是,我的应用程序也必须在XP和Windows 7下运行,所以Windows 8不是选项:)@atzz:我认为RunAs使用作业对象,因为如果用RunAs打开cmd,它已经与作业关联。这就是我的问题:(您无法解除现有进程与作业的关联。但是,如果RunAs下的
CREATE\u BREAKAWAY\u from\u job
标志有效,则可以使用此标志创建子进程,子进程将从作业中释放。问题是RunAs是否允许使用此标志。如果启动时未设置
job\u OBJECT\u LIMIT\u BREAKAWAY\u OK
cmd
,该标志将不起作用。请查看
CREATE\u BREAKAWAY\u FROM\u JOB
flag()。但我不知道RunAs是否使用作业对象作为安全措施。如果使用,它将禁用
JOB\u object\u LIMIT\u BREAKAWAY\u OK
并且该标志将不起作用。此外,Windows 8似乎支持嵌套作业(),因此如果您可以使用应用程序“仅限Windows 8”…:)@atzz:不幸的是,我的应用程序也必须在XP和Windows 7下运行,因此Windows 8不是选项:)@atzz:我认为RunAs使用作业对象,因为如果使用RunAs打开cmd,它已经与作业关联。这是我的问题:(您无法解除现有进程与作业的关联。但是,如果RunAs下的
CREATE\u BREAKAWAY\u from\u job
标志有效,则可以使用此标志创建子进程,子进程将从作业中释放。问题是RunAs是否允许使用此标志。如果启动时未设置
job\u OBJECT\u LIMIT\u BREAKAWAY\u OK
cmd
,该标志不起作用。未来的读者还应该看到这个问题,它提供了另一种方法:未来的读者还应该看到这个问题,它提供了另一种方法: