観察した
Windows スレーブで実行される Jenkins ビルド ジョブがあります。スレーブには MSBuild が正しくセットアップされており、Windows Server 2012R2 Standard x64 を実行しています。
そのビルド ジョブは、私のプロジェクトの Unittests をコンパイルして実行しています。テストでは、DUnit および DelphiXE2 コンパイラを使用しています。テストのビルドは問題ありません。しかし、テスト実行可能ファイルが開始されると、Runtime error 216 at 00406E56
発生します。実行可能ファイルは出力を生成せず、テスト結果ファイルは作成されません。テスト実行可能ファイルはConsoleRunner
、GUI ではなく を使用します。
exe をローカル管理者または制限付きユーザーとして実行すると、期待どおりに動作します。
期待される
通常、テスト実行可能ファイルは出力を生成します。テスト実行ごとにドットを出力します。とにかく、exeが実行を開始することを期待しています。
独自の研究
同じ動作を説明しているように見える質問がここにあります。
この問題は、Windows Server 2012 および 2012R2 で実行可能ファイルを
local system
(たとえばPSExec経由で) 実行しているときに発生します。Dependency Walkerを使用してライブラリの依存関係を調べたところ、exe からすべてのライブラリにアクセスできることがわかりました。ライブラリ依存関係の PATH およびその他の検索パスにはすべて、少なくとも読み取りアクセス許可があります。
local system
WOW64 が動作していることを確認しました。
容疑者
一般に、DUnit または Delphi XE2 が可視ユーザー インターフェイスを設定する権限を必要とするかどうかはわかりません。これは、local system
アカウントに欠けているものの 1 つです。