You do AssignProcessToJobObject
并且仅当您在调试器中运行时才会因“访问被拒绝”而失败。为什么是这样?
这个问题让我困惑了大约30分钟。
首先,您可能需要在您的应用程序中嵌入一个 UAC 清单(正如这里所建议的 https://stackoverflow.com/questions/53208/how-do-i-automatically-destroy-child-processes-in-windows#53214)。像这样的东西:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
其次(这是我遇到的问题),当您在调试器下运行应用程序时,它会在作业对象中创建您的进程。您的子进程需要能够脱离它,然后才能将其分配给您的工作。所以(废话),你需要指定CREATE_BREAKAWAY_FROM_JOB
在标志中CreateProcess
).
如果您没有在调试器下运行,或者您的父进程在作业中,则不会发生这种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)