2016-10-11 4 views
-1

Детали:В чем разница запуска обычного исполняемого файла из Visual Studio с запуском exe?

  1. функция не работает, если я запустить его непосредственно

  2. От VS2015, даже если я выбираю «Старт без отладки», он будет работать

  3. Функция RtlQueryProcessDebugInformation, он всегда возвращает 0xc0000022, если я не запускаю его из VS

  4. Файл является поставщиком DLL WMI, № 2 запускает его с развязанной моделью с помощью .Exe. Использовать общую модель хоста wmiprovse.exe всегда не работает.

+0

RtlQueryProcessDebugИнформация кажется недокументированной. Имейте в виду, что даже если вы получите полезный ответ, все может сломаться на новых/других версиях Windows. FWIW код 0xc0000022 «DEBUG_ACCESS_DENIED», поэтому у вас есть проблема с разрешением. –

ответ

1

Visual Studio добавит отладчик в ваш процесс, даже если это технически является сборкой выпуска. Вот почему вы можете нажать кнопку остановки отладчика. Это не действует, когда вы запускаете EXE из «Проводника».

Что касается вызова недокументированных функций Windows, то они дают недокументированные возвращаемые значения. Что еще вы ожидали? И что вы имеете в виду, «это не работает»? Функция работает, когда она ведет себя как задокументированная.

0

благодарит за ваши ответы. Функция работает после 1 дня с перезагрузкой. Я подозреваю, что это вызвано тем, что я отлаживал 2 приложения с вызовом dbghelp.dll. Это может вызвать некоторые ошибки.