如何从JobObject分离进程
有没有办法从JobObject分离进程? 我的问题是,如果我用RunAs创建一个新进程,比如cmd.exe,那么它将自动分配给一个JobObject。如果我想从这个cmd运行我的应用程序,它也会被分配给这个jobobject。问题从这里开始,因为我的应用程序将创建一个新的jobobject并创建一个新进程,然后将其分配给我的新jobobject,但它无法关联,因为以runas启动的第一个cmd已分配给jobobject,因此我创建的新进程也分配给这个jobobject如何从JobObject分离进程,c,windows,C,Windows,有没有办法从JobObject分离进程? 我的问题是,如果我用RunAs创建一个新进程,比如cmd.exe,那么它将自动分配给一个JobObject。如果我想从这个cmd运行我的应用程序,它也会被分配给这个jobobject。问题从这里开始,因为我的应用程序将创建一个新的jobobject并创建一个新进程,然后将其分配给我的新jobobject,但它无法关联,因为以runas启动的第一个cmd已分配给jobobject,因此我创建的新进程也分配给这个jobobject 我的问题是,如何将第一个C
我的问题是,如何将第一个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
,该标志不起作用。未来的读者还应该看到这个问题,它提供了另一种方法:未来的读者还应该看到这个问题,它提供了另一种方法: