Почему юнит-тесты дают сбой при запуске из учетной записи `локальной системы`?

Наблюдаемый

У меня есть работа по сборке Jenkins, которая работает на подчиненном Windows. На ведомом устройстве MSBuild настроен правильно и работает под управлением Windows Server 2012R2 Standard x64.

Эта работа по сборке - это сборка и запуск Unittests для моего проекта. В тестах используются компиляторы DUnit и DelphiXE2. Построение тестов не проблема. Но когда запускается тестовый исполняемый файл, Runtime error 216 at 00406E56 происходит. Исполняемый файл не выдает никаких результатов, а файл результатов теста не создается. Исполняемый файл теста использует ConsoleRunner а не графический интерфейс.

Когда я запускаю exe-файл как локальный администратор или пользователь с ограниченными правами, он работает как положено.

ожидаемый

Исполняемый файл теста обычно выдает результат. Он печатает точку для каждого теста. В любом случае, я ожидаю, что exe запустится.

Собственные исследования

  • Здесь есть вопрос, который, кажется, описывает то же самое поведение.

  • Эта проблема возникает в Windows Server 2012 и 2012R2 при запуске исполняемого файла как local system (например, через PSExec).

  • Я взглянул на зависимости библиотек с помощью Dependency Walker и обнаружил, что все библиотеки доступны для exe. PATH и другие пути поиска для библиотечных зависимостей имеют как минимум разрешение на чтение для local system

  • Я убедился, что WOW64 работает.

Подозреваемые

Я не знаю, требует ли DUnit или Delphi XE2 вообще разрешение на настройку видимого пользовательского интерфейса. Это одна из вещей local system аккаунт отсутствует.

0 ответов

Другие вопросы по тегам