2008-09-18 6 views

ответ

20

Этот вопрос озадачил меня примерно на 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).

Если вы не работали под отладчиком или ваш родительский процесс находился в задании, это не произошло бы.

4

Это, кажется, часто укусит меня, и, несмотря на это, сообщение 1800INFORMATION, похоже, не включает в себя ряд причин и исправлений, которые кажутся полезными, поэтому представляется целесообразным опубликовать резюме того, почему я видел это ,

  1. При попытке решить эту проблему для себя, к сведению, чем эта проблема может возникнуть по разным причинам, при работе с CMD.EXE, Explorer, и Visual Studio. Попытка запустить исполняемый файл с ошибкой из соответствующих мест может помочь определить причину проблемы. You приложение может просто найти работу от CMD.EXE, несмотря на неудачу с В.С. и Explorer.exe
  2. В моем случае под Win7 мне, казалось, нужно было прокомментировать элемент «supportedOS» , указывающий совместимость с Win7 из файла app.manifest . Похоже, проблема устранена при работе с Explorer. В добавьте манифест, щелкните правой кнопкой мыши по проекту, нажмите Добавить и найдите «Файл манифеста приложений».
  3. Чтобы заставить Visual Studio 2010 работать, мне, казалось, нужно было остановить его от использования помощника по совместимости программ, Том Минка разделяет два способа сделать это здесь: https://stackoverflow.com/a/4232259/86375. Заметьте, мне пришлось перезапустить VS2010, чтобы принять его предложенные изменения.