观察到的
我有一个在 Windows 从站上运行的 Jenkins 构建作业。从站已正确设置 MSBuild,并且正在运行 Windows Server 2012R2 Standard x64。
该构建作业正在为我的项目编译和运行单元测试。测试使用 DUnit 和 DelphiXE2 编译器。构建测试没有问题。但是当测试可执行文件启动时,Runtime error 216 at 00406E56
就会发生。可执行文件不产生输出,并且不创建测试结果文件。测试可执行文件使用ConsoleRunner
而不是 GUI。
当我以本地管理员或受限用户身份运行 exe 时,它按预期工作。
预期的
测试可执行文件通常会产生输出。它为每次测试运行打印一个点。无论如何,我希望exe开始运行。
自己的研究
这里有一个问题似乎描述了相同的行为。
local system
当运行可执行文件(例如通过PSExec )时,Windows Server 2012 和 2012R2 上会出现此问题。我用Dependency Walker查看了库依赖项,发现所有的库都可以被 exe 访问。PATH 和其他库依赖项的搜索路径都至少具有读取访问权限
local system
我确保 WOW64 正常工作。
嫌疑人
我不知道 DUnit 或 Delphi XE2 通常是否需要设置可见用户界面的权限。这是该local system
帐户缺乏的东西之一。