我想使用应用商店为 Windows 构建应用程序。编译器GNAT GPL 2016(Ada)适用于 Windows x86。
我收到以下消息:
程序“gnat-gpl-2016-x86-windows-bin.exe”运行失败:指定的可执行文件不是此操作系统平台的有效应用程序。
问题:
- Windows Server 2012 R2 Datacenter 不支持 32 位应用程序吗?
- Wow64 丢失了吗?
- 这是什么
DataExecutionPrevention_32BitApplications : True
意思?
Get-CimInstance Win32_OperatingSystem | FL *
打印出来(缩短):
Status : OK
Name : Microsoft Windows Server 2012 R2 Datacenter|C:\windows|\Device\Harddisk0\Partition5
Caption : Microsoft Windows Server 2012 R2 Datacenter
InstallDate : 3/9/2016 2:16:51 AM
CreationClassName : Win32_OperatingSystem
CSCreationClassName : Win32_ComputerSystem
CSName : APPVYR-WIN
LastBootUpTime : 10/21/2016 1:10:27 AM
LocalDateTime : 10/21/2016 1:11:59 AM
OSType : 18
Version : 6.3.9600
BootDevice : \Device\HarddiskVolume3
BuildNumber : 9600
BuildType : Multiprocessor Free
DataExecutionPrevention_32BitApplications : True
DataExecutionPrevention_Available : True
DataExecutionPrevention_Drivers : True
DataExecutionPrevention_SupportPolicy : 3
Debug : False
EncryptionLevel : 256
OSArchitecture : 64-bit
OSLanguage : 1033
OSProductSuite : 400
RegisteredUser : Windows User
SystemDevice : \Device\HarddiskVolume5
SystemDirectory : C:\windows\system32
SystemDrive : C:
WindowsDirectory : C:\windows
该问题已从 StackOverflow 移至 ServerFault。
Windows Server 2012 R2 Datacenter(64 位)不支持 32 位吗?
编辑:
它似乎DataExecutionPrevention_32BitApplications
妨碍了我运行安装程序。如何从 PowerShell 以 32 位兼容模式运行安装程序?我没有 GUI 来选择这样的选项。
答案1
Server 2012 R2 不提供 32 位版本的操作系统(适用于所有版本),但它们能够像所有其他 64 位 Windows 操作系统一样运行 32 位应用程序,并且有 WOW64,所以我认为这不是问题。除非您是少数使用 Itanium 处理器的人之一?
DataExecutionPrevention_32BitApplications :True 表示已为 32 位应用程序启用数据执行阻止。DEP 是操作系统内置的一个进程,可检查内存以帮助防止恶意代码运行。众所周知,DEP 会导致较旧的应用程序出现问题,因此您可以选择为除关键系统以外的所有系统或特定应用程序禁用它。
答案2
Windows Server 2012 R2 支持 x86 的模型应用程序,但是另一方面,您的 .exe 所需的依赖项肯定未安装。(如 vcruntime x86 等。)
我在另一个线程上看到您的评论,其中 .exe 是从 powershell 调用的,请使用 x86 的 powershell 控制台执行此类任务。
%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe