Вы делаете AssignProcessToJobObject
, и с ошибкой «доступ запрещен», но только при запуске в отладчике. Почему это?Ошибка AssignProcessToJobObject при ошибке «Отказано в доступе» при работе в отладчике
ответ
Этот вопрос озадачил меня примерно на 30 минут.
Прежде всего, вам, вероятно, понадобится манифест UAC, встроенный в ваше приложение (as suggested here). Что-то вроде этого:
<?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>
Во-вторых (и это немного, я застрял на), когда вы работаете приложение под отладчиком, он создает свой процесс в объекте работы. Какой процесс вашего ребенка должен быть способен отделиться, прежде чем вы сможете назначить его на свою работу. Итак, (duh), вам нужно указать CREATE_BREAKAWAY_FROM_JOB
в флагах для CreateProcess
).
Если вы не работали под отладчиком или ваш родительский процесс находился в задании, это не произошло бы.
Это, кажется, часто укусит меня, и, несмотря на это, сообщение 1800INFORMATION, похоже, не включает в себя ряд причин и исправлений, которые кажутся полезными, поэтому представляется целесообразным опубликовать резюме того, почему я видел это ,
- При попытке решить эту проблему для себя, к сведению, чем эта проблема может возникнуть по разным причинам, при работе с CMD.EXE, Explorer, и Visual Studio. Попытка запустить исполняемый файл с ошибкой из соответствующих мест может помочь определить причину проблемы. You приложение может просто найти работу от CMD.EXE, несмотря на неудачу с В.С. и Explorer.exe
- В моем случае под Win7 мне, казалось, нужно было прокомментировать элемент «supportedOS» , указывающий совместимость с Win7 из файла app.manifest . Похоже, проблема устранена при работе с Explorer. В добавьте манифест, щелкните правой кнопкой мыши по проекту, нажмите Добавить и найдите «Файл манифеста приложений».
- Чтобы заставить Visual Studio 2010 работать, мне, казалось, нужно было остановить его от использования помощника по совместимости программ, Том Минка разделяет два способа сделать это здесь: https://stackoverflow.com/a/4232259/86375. Заметьте, мне пришлось перезапустить VS2010, чтобы принять его предложенные изменения.