Debugging Tools for Windows

/noexecute

/noexecute 参数启用、禁用和设置数据执行保护(DEP)——即一组用于防止有害代码在被保护内存空间中被执行的硬件和软件技术。

关于使用/noexecute 参数和其他和DEP设置有关的参数的信息,查看用于配置DEP和PAE的引导参数

注意 DEP能够很大的提高安全性,如果没有特别原因不要禁用DEP。

/noexecute={alwayson | optout | optin | alwaysoff}

子参数

alwayson
为系统和所有进程启用DEP,包括Windows 内核和驱动程序。所有试图禁用DEP的操作都会被跳过。
optout
为系统和所有进程启用DEP,包括Windows 内核和驱动程序。但是管理员可以在控制面板的系统(System)中选择禁用指定程序的DEP。
optin
只为操作系统组件启用DEP,包括Windows 内核和驱动程序。管理员可以用应用程序兼容性工具(Application Compatibility Toolkit(ACT))为选定的程序启用DEP。
alwaysoff
禁用DEP。Disables DEP. Attempts to enable DEP selectively are ignored. 

在Windows XP SP2上,该子参数同时禁用物理地址扩展(PAE)。但是在Windows Server 2003 SP1上不会禁用PAE。

注释

什么是 DEP?

数据执行保护(DEP)由硬件和软件方法结合。软件DEP必须由操作系统支持,而硬件DEP在应该只包含数据的页表入口中设置了一位来避免被当作代码执行。硬件DEP必须由处理器和操作系统配合支持。如果操作系统支持DEP,但是处理器不支持,则只有软件DEP会被启用。

操作系统支持

DEP在Windows Server 2003 SP1、Windows XP SP2、Windows Vista和之后的Windows中都被支持。

/noexecute 参数只在Windows Server 2003 SP1、Windows XP SP2中支持,在Windows Vista中,使用BCDEdit的NX成员。

32位和64位支持

/noexecute 只在32位进程上起作用。它启用软件DEP,并且如果硬件支持的话,也启用硬件DEP。

在64位进程中,DEP默认启用并且不能被禁用掉(和/noexecute=alwayson效果一样)。在这些进程上,/noexecute 参数被跳过。在64位操作系统上,/noexecute 只作用于32位进程。

默认值

Windows SP2上,安装程序在引导入口中添加/noexecute=optin

在Windows 2003 SP1上,安装程序在引导入口添加/noexecute=optout

无论如何,在所有支持DEP的操作系统上,如果没有在引导入口指定/noexecute,则系统默认使用/noexecute=optin 的特性。

DEP 和 PAE

在32位系统中,硬件DEP需要物理地址扩展(PAE)的支持。因此,当支持硬件DEP的机器启用DEP是,32位Windows 自动启用PAE并跳过/nopae

在Windows XP SP2上,使用/noexecute=alwaysoff禁用DEP时,Windows同时禁用DEP和PAE。如同使用了/noexecute=alwaysoff /nopae 。要在支持硬件DEP的系统上禁用DEP并启用PAE,使用/noexecute=alwaysoff /pae来明确启用PAE。

但是,在Windows Server 2003 SP1上,使用/noexecute=alwaysoff 来禁用DEP时,Windows 只禁用DEP。PAE仍然启用并且系统跳过禁用PAE的外在的尝试,例如/nopae参数。要在Windows Server 2003 SP1上同时禁用DEP和PAE,使用/execute

获取关于这些参数和他们作用的表格,查看用于配置DEP和PAE的引导参数

在控制面板中设置DEP

要设置/noexecute=optin/noexecute=optout 特性,或者在某些可执行文件禁用DEP,可以打开控制面板,双击系统(System),点击性能(Performance)下的高级(Advanced)选项卡,点击设置(Settings)并点击数据执行保护(Data Execution Prevention)选项卡。要使设置起效,必须重起计算机。

关于DEP的更多信息,查看 Windows XP Service Pack2的功能改变,第三部分:内存保护技术

示例

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=alwayson

Bootcfg 命令

bootcfg /raw "/noexecute=alwayson" /A /ID 1

Build machine: CAPEBUILD