Windows Aero
| Microsoft Windows 的视觉样式 | |
Windows 7 中的 Windows Aero | |
| 包含于 | Windows Vista、Windows 7、Windows 8 及更高版本的限定版本 |
|---|---|
| 首次出现 | Windows Longhorn Build 4015.main |
Aero 是一种半透明的 Windows 视觉样式,从 Longhorn 的 Milestone 5 版本到 Windows 7(在 Windows 8 中删除了窗口透明度)使用。首个已知的引用 Aero 的版本是 Windows Longhorn Build 4015.main,最后一个拥有功能窗口透明度的 Aero 版本是 Windows 8 Build 8427。在 Windows Longhorn 中,Aero 效果依赖于桌面组合引擎(或较新版本中的桌面窗口管理器),此引擎仅适用于少数版本,如 4038、4039、4042、4066 和 4074。
在 Windows Vista 和 Windows 7 中,由于使用了硬件加速,此主题依赖于 WDDM 驱动程序。如果不支持硬件加速,则改用 Windows Basic 主题。至少从 Windows 8 Build 7880 开始,随着桌面窗口管理器引入软件渲染回退,此要求被删除。此主题也可用于 Windows Server 2008 及更高版本的 Windows 服务器版本。
重置前 Longhorn 版本中的 Aero
Longhorn 的重置前版本不包含 Aero 主题。有一个非常普遍的误解,即可以通过重命名视觉样式文件在 Longhorn 的重置前版本中“启用”Aero;重命名文件会欺骗操作系统,使其假定用户有权访问私有的、未泄露的 Aero 主题,从而启用各种 DCE/DWM 效果。例如,在 M6 版本中将 plex.msstyles 重命名为 aero.msstyles(Build 4042.Lab06_n 的 slate.msstyles 重命名为 aero.msstyles)将授予用户 Glass DCE 窗口框架,但将保留大部分 Plex(对于 4042.Lab06_n 是 Slate)样式。对于 M7 版本,可以使用 Jade 视觉样式重新创建 Aero 视觉样式,尽管此过程并不像将 jade.msstyles 重命名为 aero.msstyles 那么简单。
Windows Longhorn Build 4038 至 Build 4042.Lab06_n
首先,确保安装兼容的 Direct3D 驱动程序并使用 dxdiag.exe 验证其功能。尽管使用参数 start 运行 sbctl(在 C:\WINDOWS\i386 中)将启用 DCE 边框,但它将显示为不透明。User Experience Desktop Server 会检查是否存在 %windir%\Resources\Themes\Aero\aero.msstyles;如果找到,则将应用透明玻璃边框,而非不透明的金属边框。要启用透明边框,请导航到 C:\WINDOWS\Resources\Themes 并复制“Plex”文件夹(“Slate”用于 Build 4042 的 Lab06_n 编译)。将复制的文件夹粘贴回 Themes 目录,此目录会自动将自身重命名为“Plex - Copy”(对于上述版本,则为“Slate - Copy”)。将新复制的文件夹重命名为“Aero”,并将其中的 .msstyles 文件重命名为 aero.msstyles。随后,重新启动主题服务(通过对 Lab06 版本执行 net stop winux 和 net start winux 或注销并重新登录)。最后,再次运行 sbctl start 以启用玻璃边框。
Windows Longhorn Build 4066 至 4082
这是有关如何在 Longhorn Build 4066 至 4082 中启用 Aero 主题的指南。[a]
视频驱动程序和主题文件
如果使用 VMware Workstation 版本 7.1,必须安装适当的 SVGA 驱动程序。要安装驱动程序,请转到设备管理器,找到“图形”并使用已安装或刻录的驱动程序包 ISO 单击“更新驱动程序”(由于缺少 hdwwiz.cpl,设备管理器可能无法在 Build 4081 和 4082 上正常运行。此外,这些版本可能需要在更新驱动程序后启动到 VGA 显示模式,否则可能会导致 0x000000B4 蓝屏死机。这是由于无法初始化视频驱动程序引起的。
Build 4081 和 4082 附带了不完整的 DirectX 9 副本,启用 DWM 时可能会导致黑屏。缺少的组件可以从 Windows XP 的 DirectX 9.0b 或 9.0c 安装程序中获取。安装程序本身在 Longhorn 上不工作,但可以通过手动提取 dxnt.cab 的内容并从其右键单击菜单安装其中找到的所有 .inf 文件(对所有覆盖提示回答否),并将任何剩余文件从 dxnt.cab 复制到 System32 中来绕过这一点。通过在 dxdiag 中运行 Direct3D 测试来验证安装成功(它可能会提示 DirectShow 未注册,但旋转的 3D 立方体动画仍可以确认 DirectX 正常运行)。
随后,应重建 Aero 主题文件。Aero 主题文件可以基于 Jade 重建,此处是一个完成重建的 aero.msstyles 文件。然后,在 %WinDir%\Resources\Themes 目录中创建一个名为 Aero 的文件夹,并将重建的 aero.msstyles 放在新创建的 Aero 文件夹中。完成后,回到 %WinDir%\Resources\Themes,复制 jade.theme 并将其命名为 aero.theme。最后一步是修改 aero.theme 文件以加载重建的 aero.msstyles。使用记事本打开 aero.theme,将 DisplayName=@themeui.dll,-2013 更改为 DisplayName=Aero,然后将“Jade”的所有实例替换为“Aero”并保存。
最后一步是修改注册表以允许应用 Aero 主题。打开注册表编辑器,浏览到 HKLM\Software\Microsoft\Windows\CurrentVersion\ThemeManager,创建一个名为 DemoCheckOverride 的 DWORD,并将其值设置为 64222(或十六进制的 0xFADE)。
Aero 和 Jade 的区别
Jade 是用于测试的公共 DWM 主题,它基于私有 Aero 主题,在禁用 DWM 时拥有相同的外观,且具有大致相似的资源,例如按钮控件。但是,它与私有 Aero 主题在几个方面有所不同。在本节中,列出了有关差异的一些技术信息。
自动启用 DWM(UsesComposition)
私有 Aero 主题使 DWM 能够在申请或登录时自动激活。为了使 Jade 主题拥有相同的功能,必须将名为 UsesComposition 的 BOOL 的值修补为 TRUE。
DemoCheck
私有 Aero 主题在主题文档类下包含一个名为 DemoCheck 的字符串,主题管理器使用此字符串来确保 Aero 主题只能应用于 Microsoft 的演示计算机。它包含 Microsoft 网络共享上文件的路径名,此文件只能由 Microsoft 员工访问。如果此文件可访问,则主题将适用,否则将引发拒绝访问(Access Denied)错误。如果演示检查通过,则 Animated Preview Pane Aurora(动画预览窗格 Aurora)也将启用,但由于实施中存在一些逻辑错误,演示检查无效。通过将包含数据 \\cloak2\drop\bin\enlist.txt 的 DemoCheck 字符串添加到主题文档中,可以选择将 DemoCheck 添加到 Jade 主题中。
Aero 资源
不需多言,私有 Aero 主题包含透明玻璃窗框等 Aero 资源,但目前尚不可用。要像重建原始主题一样重建 Aero 主题,请将 Jade(STREAM)资源替换为修改后的重置后 Aero 资源(建议使用 RealAero 资源,它使用修改后的 Build 5048 资源)。
Animated Preview Pane Aurora(动画预览窗格 Aurora,APPA)
私有 Aero 主题还具有用于预览窗格的动画版本(也称为动画预览窗格 Aurora,Animated Preview Pane Aurora,APPA)的资源。它存储在主题文件的 BAML 文件中。在 Jade 主题的当前原版状态下,它已过时,这与系统的默认 BAML 解析器不兼容。因此,必须将 BAML 文件更新为最新格式,才能在预览窗格中呈现。
其他
Jade.msstyles 文件包含许多纯文本和二进制'Jade'字符串,你可以选择将其替换为'Aero'。
MIL 效果
要在资源管理器中启用媒体集成层(MIL)效果,请将以下条目合并到注册表中:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer]
"MILExplorer"=dword:00000001
要在桌面上启用 MIL 效果(动画 Aero Stars 效果),请在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer 中将 MILDesktop DWORD 值设置为 1。之后,通过在运行中键入 tskill explorer 重新启动资源管理器,或者应用修补的 Aero 主题,并将 UsesComposition BOOL 设置为 TRUE(请参阅上文,了解手动修补 Aero 主题的说明),以自动启用 DWM,此外还启用透明任务栏和边栏。
如果未安装适当的显示驱动程序,DWM 可能无法加载,这可能会导致 Aero Glass 边框和资源管理器在启用 MIL 效果时无法正确呈现。
Windows Longhorn Build 4088 至 4093
此范围内的版本包括桌面窗口管理器的托管 .NET 重写功能。此版本在重置后被放弃,并将被替换为新的本机实现,此实现与 4083 之前的版本中使用的实现有很大不同。与重置前和重置后版本的本机实现不同,此版本甚至可以在“标准 VGA 图形适配器(Standard VGA Graphics Adapter)”驱动程序上运行。
新实现位于组件包 C:\build\filerepository\windowmanager_a2ea4897 中,称为 windowmanager.exe。两个 XAML 文件 DwmDsk.xaml 和 DwmWin.xaml 在版本中不存在,必须在与 windowmanager.exe 相同的目录中重新构造。如果托管 DWM 实现没有因开发重置而被放弃,可能意味着这些内容最终会作为 BAML 包含在 aero.msstyles 文件中。为了允许 DWM 工作,需要早期版本的 Jade 主题(最好是 Build 4066 到 4082 中的版本,因为 STREAM 文件夹中的一些 DWM 资源在 Build 4088 到 4093 的 Jade 中转换为位图)或此版本范围中修改的 Jade,将位图替换为其 PNG 对应项。
要启用 DWM,请在目录 C:\build\filerepository\windowmanager_a2ea4897 中创建文件 DwmDsk.xaml,其中包含以下内容:
DwmDsk.xaml:
<?Mapping XmlNamespace="mscorlib_System" ClrNamespace="System" Assembly="mscorlib" ?>
<?Mapping XmlNamespace="windowmanager.WindowLayouts" ClrNamespace="WindowLayouts" Assembly="WindowManager" ?>
<Canvas xmlns="http://schemas.microsoft.com/2003/xaml/" xmlns:wl="windowmanager.WindowLayouts" xmlns:System="mscorlib_System" xmlns:def="Definition" Width="800" Height="600" Background="#80FF0000">
<Canvas.Resources>
<Style def:Name="ItemsControlStyle">
<ItemsControl/>
<Style.VisualTree>
<FlowPanel Width="400" Height="600" ItemsControl.IsItemsHost="true" Background="#8000ff00"/>
</Style.VisualTree>
</Style>
<Style def:Name="ItemsControlStyle2">
<ItemsControl/>
<Style.VisualTree>
<wl:CascadePanel ID="myCascadePanel" ItemsControl.IsItemsHost="true"/>
</Style.VisualTree>
</Style>
</Canvas.Resources>
<wl:CascadeItemsControl ID="DesktopView" Background="#ccffffff" Style="{ItemsControlStyle2}">
<CollectionContainer Collection="*Bind()"/>
</wl:CascadeItemsControl>
<ItemsControl ID="TaskBarIconView" Width="400" Height="600" Background="#40334455">
<CollectionContainer Collection="*Bind()"/>
</ItemsControl>
</Canvas>
创建 C:\build\filerepository\windowmanager_a2ea4897\DwmWin.xaml,包含以下内容:
DwmWin.xaml:
<?Mapping XmlNamespace="mscorlib_System" ClrNamespace="System" Assembly="mscorlib" ?>
<?Mapping XmlNamespace="windowmanager.WindowLayouts" ClrNamespace="WindowLayouts" Assembly="WindowManager" ?>
<?Mapping XmlNamespace="explorer" ClrNamespace="MS.Internal.Desktop" Assembly="System.Windows.Explorer" ?>
<FlowPanel xmlns="http://schemas.microsoft.com/2003/xaml/" xmlns:wl="windowmanager.WindowLayouts" xmlns:System="mscorlib_System" xmlns:def="Definition" Width="800" Height="600" Background="#80FF0000">
<FlowPanel.Resources>
<Style def:Name="NonClientAreaStyleNone">
<wl:UserWindowChrome Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<Canvas ID="Region_WindowTransform">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)"/>
</Canvas>
</Style.VisualTree>
</Style>
<Style def:Name="NonClientAreaStyleBorder">
<wl:UserWindowChrome Background="#800000ff" Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<Canvas ID="Region_WindowTransform" Background="#800000ff">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)"/>
<Text TextContent="*Bind(Path=Title)"/>
</Canvas>
</Style.VisualTree>
</Style>
<Style def:Name="NonClientAreaStyleFrame">
<wl:UserWindowChrome Background="#8000ffff" Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<DockPanel ID="Region_WindowTransform">
<DockPanel DockPanel.Dock="Top">
<Canvas DockPanel.Dock="Right">
<fullexp:HackImage xmlns:fullexp="explorer" Margin="0,0,0,0" fullexp:HackSource="theme://CompositedWindow,SDB_BACK,SDBTB_NORMAL" fullexp:HackNineGrid="9,105,150,9" Width="100%" Height="100%"/>
<Grid Width="100%" Margin="0,6,0,0">
<ColumnDefinition Width="8"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="8"/>
<DockPanel ID="Region_Resize" Grid.Column="1" Background="#00000000">
<fullexp:HackImage xmlns:fullexp="explorer" fullexp:HackSource="theme://CompositedWindow,SDB_CLOCKGLASS,SDBTB_NORMAL" Width="20" Height="17" Background="#FFFF0000" DockPanel.Dock="Left"/>
<Text TextContent="*Bind(Path=Title)" DockPanel.Dock="Left" Margin="3,3,0,0"/>
</DockPanel>
</Grid>
<DockPanel DockPanel.Dock="Bottom" Margin="0,27,0,0">
<DockPanel DockPanel.Dock="Left" Margin="9,0,9,9">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)" DockPanel.Dock="Right"/>
</DockPanel>
</DockPanel>
<DockPanel Width="100%">
<fullexp:HackImage xmlns:fullexp="explorer" ID="FakeCloseButton" fullexp:HackSource="theme://CompositedWindow,SDB_EXPANDO_CLOSED_HORIZ,SDBTB_NORMAL" Width="43" Height="14" DockPanel.Dock="Right" Margin="0,1,6,0" fullexp:HackNineGrid="0,0,14,0"/>
<fullexp:HackImage xmlns:fullexp="explorer" ID="FakeMaximizeButton" fullexp:HackSource="theme://CompositedWindow,SDB_STARTBUTTON,SDBTB_NORMAL" Width="25" Height="14" DockPanel.Dock="Right" Margin="0,1,0,0" fullexp:HackNineGrid="0,0,14,0"/>
<fullexp:HackImage xmlns:fullexp="explorer" ID="FakeMinimizeButton" fullexp:HackSource="theme://CompositedWindow,SDB_TASKBACK,SDBTB_NORMAL" Width="27" Height="14" DockPanel.Dock="Right" Margin="0,1,0,0" fullexp:HackNineGrid="0,0,14,0"/>
</DockPanel>
<DockPanel Width="100%">
<Canvas ID="CloseButton" Width="43" Height="14" DockPanel.Dock="Right" Margin="0,1,6,0" Background="#00112233"/>
<Canvas ID="MaximizeButton" Width="25" Height="14" DockPanel.Dock="Right" Margin="0,1,0,0" Background="#00112233"/>
<Canvas ID="MinimizeButton" Width="27" Height="14" DockPanel.Dock="Right" Margin="0,1,0,0" Background="#00112233"/>
</DockPanel>
</Canvas>
</DockPanel>
</DockPanel>
</Style.VisualTree>
</Style>
<Style def:Name="NonClientAreaStyleFrameNonAero">
<wl:UserWindowChrome Background="#80ffff00" Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<DockPanel ID="Region_WindowTransform" Background="#80ffff00">
<Canvas DockPanel.Dock="Top" ID="Region_Resize" Margin="6,6,6,0" Background="#00112233">
<DockPanel Width="100%">
<Canvas ID="CloseButton" Width="20" Height="20" Background="#FFFF0000" DockPanel.Dock="Right"/>
<Canvas ID="MaximizeButton" Width="20" Height="20" Background="#FF00FF00" DockPanel.Dock="Right"/>
<Canvas ID="MinimizeButton" Width="20" Height="20" Background="#FF0000FF" DockPanel.Dock="Right"/>
<Text TextContent="*Bind(Path=Title)" DockPanel.Dock="Left"/>
</DockPanel>
</Canvas>
<DockPanel DockPanel.Dock="Bottom" Margin="0,0,0,6">
<Canvas DockPanel.Dock="Right" Margin="6,0,6,0">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)"/>
</Canvas>
</DockPanel>
</DockPanel>
</Style.VisualTree>
</Style>
</FlowPanel.Resources>
</FlowPanel>
然后,可以通过调用 C:\build\filerepository\windowmanager_a2ea4897\windowmanager.exe a(使用任意参数以允许其作为常规应用程序而非服务运行)或将任何文件拖动到资源管理器中 windowmanager.exe 来启用 DWM。
此重写版本最初打算作为 Windows 服务运行。由于存在阻止服务访问主题数据的问题,因此需要一个不依赖于主题服务的不同 DwmWin.xaml 文件:
DwmWin.xaml:
<?Mapping XmlNamespace="mscorlib_System" ClrNamespace="System" Assembly="mscorlib" ?>
<?Mapping XmlNamespace="windowmanager.WindowLayouts" ClrNamespace="WindowLayouts" Assembly="WindowManager" ?>
<FlowPanel xmlns="http://schemas.microsoft.com/2003/xaml/" xmlns:wl="windowmanager.WindowLayouts" xmlns:System="mscorlib_System" xmlns:def="Definition" Width="800" Height="600" Background="#80FF0000">
<FlowPanel.Resources>
<Style def:Name="NonClientAreaStyleNone">
<wl:UserWindowChrome Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<Canvas ID="Region_WindowTransform">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)"/>
</Canvas>
</Style.VisualTree>
</Style>
<Style def:Name="NonClientAreaStyleBorder">
<wl:UserWindowChrome Background="#800000ff" Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<Canvas ID="Region_WindowTransform" Background="#800000ff">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)"/>
<Text TextContent="*Bind(Path=Title)"/>
</Canvas>
</Style.VisualTree>
</Style>
<Style def:Name="NonClientAreaStyleFrame">
<wl:UserWindowChrome Background="#8000ffff" Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<DockPanel ID="Region_WindowTransform" Background="#8000ffff">
<Canvas DockPanel.Dock="Top" ID="Region_Resize" Margin="6,6,6,0" Background="#00112233">
<DockPanel Width="100%">
<Canvas ID="CloseButton" Width="20" Height="20" Background="#FFFF0000" DockPanel.Dock="Right"/>
<Canvas ID="MaximizeButton" Width="20" Height="20" Background="#FF00FF00" DockPanel.Dock="Right"/>
<Canvas ID="MinimizeButton" Width="20" Height="20" Background="#FF0000FF" DockPanel.Dock="Right"/>
<Text TextContent="*Bind(Path=Title)" DockPanel.Dock="Left"/>
</DockPanel>
</Canvas>
<DockPanel DockPanel.Dock="Bottom" Margin="0,0,0,6">
<Canvas DockPanel.Dock="Right" Margin="6,0,6,0">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)"/>
</Canvas>
</DockPanel>
</DockPanel>
</Style.VisualTree>
</Style>
<Style def:Name="NonClientAreaStyleFrameNonAero">
<wl:UserWindowChrome Background="#80ffff00" Width="*Bind(Path=Width)" Height="*Bind(Path=Height)"/>
<Style.VisualTree>
<DockPanel ID="Region_WindowTransform" Background="#80ffff00">
<Canvas DockPanel.Dock="Top" ID="Region_Resize" Margin="6,6,6,0" Background="#00112233">
<DockPanel Width="100%">
<Canvas ID="CloseButton" Width="20" Height="20" Background="#FFFF0000" DockPanel.Dock="Right"/>
<Canvas ID="MaximizeButton" Width="20" Height="20" Background="#FF00FF00" DockPanel.Dock="Right"/>
<Canvas ID="MinimizeButton" Width="20" Height="20" Background="#FF0000FF" DockPanel.Dock="Right"/>
<Text TextContent="*Bind(Path=Title)" DockPanel.Dock="Left"/>
</DockPanel>
</Canvas>
<DockPanel DockPanel.Dock="Bottom" Margin="0,0,0,6">
<Canvas DockPanel.Dock="Right" Margin="6,0,6,0">
<Image ID="ClientArea" Source="*Bind(Path=ClientArea)"/>
</Canvas>
</DockPanel>
</DockPanel>
</Style.VisualTree>
</Style>
</FlowPanel.Resources>
</FlowPanel>
这产生了一个更简单的边框设计,有两种变体:第一种是黄色的,在使用 Slate、Luna 或 Windows 经典主题时加载;第二种是蓝色的,使用 Jade 主题加载。前者与 Slate 主题一起使用,无论使用 DwmWin.xaml 的哪个变体。这可以作为服务运行,且无需使用早期版本或修改的当前版本的 Jade 主题即可工作。要启用作为服务运行,请将以下条目导入注册表:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DWM]
"Start"=dword:00000003
"Type"=dword:00000210
"ErrorControl"=dword:00000001
"ImagePath"="C:\\build\\filerepository\\windowmanager_a2ea4897\\windowmanager.exe"
"DisplayName"="Desktop Window Manager"
"Description"="Provides desktop window management and theming services."
"ObjectName"="LocalSystem"
"Group"="UIGroup"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DWM\Enum]
"0"="Root\\LEGACY_DWM\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
然后,可以通过调用 net start dwm 或通过服务 MMC 管理单元启动 DWM。不建议将启动类型设置为 Automatic(自动),因为 DWM 过早启动可能会导致各种桌面功能被破坏。
启动后,可以通过按 Ctrl+⇧ Shift+F10 来禁用桌面组合,无论窗口管理器是作为应用程序还是服务运行。
Windows Vista Beta 1-2 版本中的 Aero
这是在 VMware 和不支持 Longhorn 显示驱动程序模型(Longhorn Display Driver Model)的实际硬件上从 Windows Vista Build 5048 到 Build 5356(不包括 Build 5308-5342)启用 Windows Aero(即桌面窗口管理器)的指南。对于 VMware,建议使用版本 7 到 11(对于 Workstation)或版本 3 到 7(对于 Player),这是因为从 12 开始的新版本存在渲染问题,即显示器会闪烁,且只有部分活动和非活动窗口可以正确渲染。这可能是由于显示引擎中的变化以支持 DirectX 10 和 OpenGL 3.3 引发的。由于未知原因,此问题在 VMware 6.5 上也会出现。
显示驱动
必须安装兼容的 SVGA 驱动程序才能在 VMware 上启用 3D 加速。VMware 版本 6.5-11.x 中的任何 SVGA 驱动程序都可以正常工作。
对于实际硬件,必须安装与用户 GPU 兼容的 Windows XP 驱动程序。
在 Build 5048-5284 上启用 Aero
- 安装驱动程序后,打开
regedit.exe。导航到HKEY_LOCAL_MACHINE\Software\Microsoft\DWM(如果是 Build 5048 至 5231.2)或HKEY_CURRENT_USER\Software\Microsoft\DWM(如果是 Build 5259 至 5284)。如果 DWM 键值不存在,请手动创建。 - 创建名为
EnableMachineCheck(Build 5048 至 5231.2)或UseMachineCheck(Build 5259 至 5284)的 DWORD 键值,并将其值设置为 0。注销并重新登录,Aero 应自动启用。
在 Build 5355-5356 上启用 Aero
此版本上的 Aero 需要 WDDM,任何使用 XPDM 的尝试都不会成功。因此,安装 RTM WDDM 驱动程序后,登录时可能会出现黑屏。这是因为 5308 到 5356 时间范围内的版本在 msvcrt.dll 文件中不包含正确的代码来正确操作 RTM WDDM 驱动程序。
因此,用户必须将版本的 msvcrt.dll 文件和 spsys.dll 驱动程序(由于前面提到的驱动程序导致蓝屏死机,仅替换 msvcrt.dll 文件不起作用)替换为 5378。
替换文件后,应在下次启动时自动启用 Aero。如果没有,请打开 regedit.exe,导航到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\DWM,创建一个名为 UseMachineCheck 的 DWORD 并将其设置为 0。
可选键值
以下值可用于将各种效果应用于 DWM:
| 键 | 值 |
|---|---|
| ForceSoftwareD3D
(仅 Build 5048-5284) |
1 - 强制软件渲染;建议在 VMware 6.5 和 VMware 12.x 及更高版本上使用,以防止屏幕闪烁,但可能会出现一些轻微的图形伪影。
0 - 使用硬件渲染 |
| Glass
(仅 Build 5098-5284) |
1 - 启用玻璃边框
0 - 禁用玻璃边框;在 Build 5219 及更高版本上禁用模糊效果 |
| Blur | 1 - 启用模糊效果
0 - 禁用模糊效果;Build 5098-5219 在强制软件渲染并强制启用玻璃效果时需要 |
| BlurSigma
(仅 Build 5212-5270) |
介于 1 和 30 之间的十进制值 - 控制模糊强度
任何其他值 - 禁用透明度并使边框变黑 |
| Animations | 1 - 启用 Aero 动画效果
0 - 禁用 Aero 动画效果 |
| AnimationsShiftKey | 1 - 启用 ⇧ Shift 键以减慢动画速度
0 - 禁用此选项 |
| RenderClientAreaOnly | 1 - 仅呈现应用程序的客户端区域;窗口边框和标题栏不会呈现,请谨慎使用!
0 - 呈现客户端和服务器(DWM)区域 |
Bug
- 如果在 Build 5231 的两个编译中都强制进行软件渲染,DWM 将崩溃,即使
Blur或Glass设置为 0 也是如此。 - 如果在 Build 5259-5284 上强制进行软件渲染,DWM边框将不可见。
- 在 Build 5259 之前的任何版本中,Aero 动画都可能滞后。可以通过重新启动
uxss.exe进程来解决此错误。 - 在 Build 5355-5356 上替换
msvcrt.dll文件后,控制面板、在 Windows 资源管理器和 Flip3D 中导航将不起作用。
其他问题
- 由于这些版本使用 LDDM 而不是较新版本中使用的 WDDM,因此 RTM Vista 驱动程序无法正常工作。需要 Windows XP 驱动程序才能在 Build 5048-5284 上启用 Aero。
- 默认情况下,Aero 无法在 Build 5098 和 5112 上运行,因为这些版本中的 DWM 需要 LDDM 驱动程序。将这些版本中的
uxss.exe文件替换为修补版本,可以将 DWM 与 XPDM 驱动程序一起使用。 - Aero(截至当前)在实际硬件之外无法处理 Build 5308.6 至 5342 各版本。
- 在 Build 5219、Build 5231 和 Build 5231.2 上启用 Aero 时,任务栏始终是透明的,即使窗口最大化也是如此。
- Flip3D 是通过 Build 5212、5215 和 5219 中的 ⊞ Win+空格键快捷方式激活的,而不是在更高版本中通过 ⊞ Win+Tab 激活的。
Windows 8.x 中的 Aero
Windows 8 的早期版本使用与 Windows 7 相同的 Aero 主题。后来在 Build 7779 中修改为使用更大的居中标题栏标题,然后在 Build 7880 中的对话框上具有更小的关闭按钮(也不再需要安装 WDDM 驱动程序,因为 DWM 现在可以在软件渲染模式下运行),且在 Build 7985 之前保持不变,引入了对 Aero 主题的几个主要设计更新,使其能够符合 Metro 设计语言, 例如某些窗口元素中的尖角和平面。
在 Windows 8 Build 8102.101 中,可以通过运行 WindowsAnytimeUpgradeResults.exe 可执行文件在 Aero Lite 主题(称为 Windows Basic)中启用DWM玻璃效果。
尽管 Windows 8 Build 8432.fbl_loc 及更高版本(包括 RTM 和 Windows 8.1)禁用了生成玻璃效果所需的功能,但可以通过使用 DWM bug 重新启用它们,尽管 DWM 渲染器中可能会显示图形伪影。在 Windows 8 中,有两种方法可以强制启用玻璃效果:
- 方法 1(使用 Windows 基本主题):右键单击桌面并打开个性化。选择任何高对比度主题以应用它。应用后,单击窗口颜色打开它。保持页面打开状态并将其最小化。打开一个单独的个性化窗口并应用上一个主题,然后再使用高对比度并关闭新打开的个性化窗口。切换到其他个性化窗口并保存更改以使用高对比度颜色。要禁用玻璃效果,请切换到其他主题或修改当前的桌面背景或窗口颜色。[b]
- 方法 2(使用默认主题):
- 启动注册表编辑器。
- 导航到
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM,并将ColorizationGlassAttribute的值设置为 2。 - 结束桌面窗口管理器进程。
Bug
- 在 Windows 8 Build 8102.101 中,某些利用完整 DWM 工作区的应用(例如桌面小工具库、Windows 移动中心或Firefox)的窗口背景下半部分无法正确呈现。
- 在 Windows 8 Build 8432.fbl_loc 及更高版本中,如果使用上述 bug 启用了“玻璃”效果,将启用损坏的“玻璃”效果,导致边框将菜单、图标或其他窗口的内容绘制到其自身。移动窗口或调整窗口大小也会留下标题栏和光标的痕迹。最大化窗口将暂时清除这些窗口。
- 在从 Windows 8 Build 7779 到 Windows 8 Build 7984 的许多版本中,只有窗口的顶部是模糊的。窗口的侧边和下边界是纯透明的,没有任何模糊效果,即使在设置中关闭了窗口透明度,此透明度也会保持不变。
图库
Windows Longhorn / Windows Vista
重置前
-
Longhorn Build 4015 中的金属窗框
-
Longhorn Build 4039 中的玻璃窗框
-
Longhorn Build 4042 中的玻璃窗框
-
Longhorn Build 4050 使用玻璃窗框
-
使用玻璃窗框的未识别 Longhorn 演示版本
-
Longhorn Build 4074 使用 Jade 窗框
-
Longhorn Build 4074 使用 RealAero 改装的玻璃窗框
-
Longhorn Build 4093 使用简单的 XAML 窗口框架
重置后
-
Windows Vista Build 5048 中的 Aero 主题
-
Windows Vista Build 5112 中的 Aero 主题
-
Windows Vista Build 5223 中的 Aero 主题
-
Windows Vista Build 5259 中的 Aero 主题
-
Windows Vista Build 5284.vbl media ehome 中的 Aero 主题
-
Windows Vista Build 5355.vbl media 中的 Aero 主题
-
Windows Vista 中的 Aero 主题
Windows 7
-
Windows 7 Build 6608 中的 Aero 主题
-
Windows 7 Build 7000 中的 Aero 主题
-
Windows 7 中的 Aero 主题
Windows 8
-
Windows 8 Build 7850 中的 Aero 主题
-
Windows 8 Build 7989 中的 Aero 主题
-
Windows 8 Build 8056.fbl_grfx_dev1 中的 Aero 主题
-
Windows 8 Build 8102.101 中的 Aero 主题
-
Windows 8 Build 8102.101(未被 redpill)中的 Aero 主题
-
Windows 8 Build 8250 中的 Aero 主题
-
Windows 8 Build 8427 中的 Aero 主题
-
Windows 8 中的 Aero 主题
-
Windows 8.1 中的 Aero 主题
Windows 10 和 11
-
Windows 10 中的 Aero 主题
-
Windows 11 中的 Aero 主题