Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибки DUnit при запуске от имени 'Local System' в Windows Server 2012 R2 с Delphi XE2

Delphi , ОС и Железо , Windows

В статье рассмотрим проблему, связанную с выполнением юнит-тестов, написанных с использованием DUnit и компилятора Delphi XE2, на сервере Windows Server 2012 R2 в среде Jenkins. Проблема заключается в том, что при запуске тестового исполняемого файла от имени учетной записи 'Local System' возникает ошибка выполнения с кодом 216. В то же время, при запуске того же файла от имени администратора или обычного пользователя, тесты работают корректно.

Описание проблемы

При выполнении сборки в Jenkins на Windows-славе с Windows Server 2012R2 Standard x64, происходит компиляция и запуск юнит-тестов, использующих DUnit и Delphi XE2. Проблема возникает на этапе запуска тестового исполняемого файла: он выдает ошибку выполнения с кодом 216 без создания файла с результатами тестирования. Используется ConsoleRunner вместо GUI. При этом, если запустить файл от имени администратора или обычного пользователя, тесты работают без ошибок.

Ожидаемое поведение

Тестовый исполняемый файл должен производить вывод, печатая точку для каждого запущенного теста.

Исследование проблемы

Автор вопроса провел исследование, которое включало:

  • Проверку вопроса на Stack Overflow, где описывается похожее поведение.
  • Установление факта, что проблема возникает на Windows Server 2012 и 2012R2 при запуске исполняемого файла от имени 'Local System', например, через PSEXEC.
  • Анализ зависимостей библиотеки с помощью Dependency Walker, который показал, что все библиотеки доступны для исполняемого файла.
  • Проверку работоспособности WOW64.

Подозрения

Возможно, DUnit или Delphi XE2 требуют разрешения на создание видимого пользовательского интерфейса, которого лишена учетная запись 'Local System'.

Подтвержденный ответ

Учитывая, что учетная запись 'Local System' не имеет доступа к пользовательскому интерфейсу, можно предположить, что проблема связана с отсутствием необходимых прав для работы некоторых компонентов DUnit или Delphi XE2, которые могут требовать взаимодействия с пользовательским интерфейсом даже в консольном режиме.

Альтернативный ответ

Для решения проблемы можно попробовать следующие шаги:

  1. Запустить тесты от имени пользователя с достаточными правами, а не от имени 'Local System'.
  2. Проверить настройки безопасности для исполняемого файла и его зависимостей, убедиться, что они доступны для 'Local System'.
  3. Обновить Delphi XE2 до последней версии, так как возможны исправления, связанные с безопасностью и совместимостью.

Пример кода

Пример кода на Object Pascal, который может быть использован в консольном приложении DUnit, выглядит следующим образом:

program ConsoleUnitTestRunner;

{$APPTYPE CONSOLE}

uses
  DUnit;

var
  Result: TTestResult;
begin
  Result := TTestResult.Create;
  try
    DUnitFrame.Run(Result);
  finally
    Result.Free;
    Readln; // Задержка для отображения результатов тестирования в консоли
  end;
end.

Этот код запустит юнит-тесты, и если все настроено правильно, вы увидите результаты в консоли.

Заключение

Проблема с запуском юнит-тестов DUnit от имени 'Local System' может быть решена путем пересмотра настроек безопасности и запуска тестов от имени пользователя с необходимыми правами. Это позволит избежать ошибок, связанных с ограничениями учетной записи 'Local System'.

Создано по материалам из источника по ссылке.

В статье обсуждается проблема с запуском юнит-тестов на Delphi XE2 в среде Windows Server 2012 R2, когда тесты не работают от имени 'Local System', но функционируют корректно при запуске от учетной записи администратора или обычного пользовател


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 15:39:32/0.0051841735839844/1