
我想你们之前都测试过 Longhorn build 4074 和它的 DWM…如果没有,那么这是一个很好的机会让你们了解美丽的 Aero 主题。我将通过不在这里记录整个 Longhorn 主题格式来保持这篇文章的简短。
你可能在网上看到过关于如何将 Jade 主题转换为 Aero 的各种文章,但这篇文章有所不同。
如果您以前看过 PDC 2003 演示的视频,那么我相信您已经注意到 DWM 在用户登录时自动打开… 但是怎么做呢?仅仅将 jade.msstyles
重命名为 aero.msstyles
并不能解决问题。在对主题格式和一些主题相关代码进行反向工程之后,我发现主题文件实际上可以用于自动启用 DWM。在 Jade 主题的 globals
部分下,有一个叫做 UsesComposition
的 BOOL
,它恰好是 FALSE
。如果 UsesComposition
设置为 TRUE
,则无论何时应用主题,它都会通知主题管理器打开 DWM。由于主题是在启动期间应用的,因此对于 UsesComposition
设置为 TRUE
的主题,DWM 将自动启用。
私有 Aero 主题的另一个功能是 Animated Preview Pane Aurora(APPA)。它使用在 Aero 主题的 PreviewPane.Aurora
部分下定义的 BAML
文件进行显示。它实际上在 Jade 主题中,但 BAML
文件的格式较旧。我们只需将其替换为最新格式的 BAML
文件,然后 APPA 将正确的显示。
用 jade.msstyles
重命名到 aero.msstyles
的技巧接下来您将看到的显然是绿色的 DWM 窗口框架。有两个 Aero 主题,一个公共主题叫 Jade,一个私有主题叫 Glass。差别是显而易见的,虽然两种宝石(如果你认为玻璃是宝石)都是半透明的,Jade(翡翠)是绿色的而 Glass(玻璃)是清亮的。不用说,重命名一个文件不会让你得到 Glass 的资源。我们知道私有 Aero 主题拥有玻璃般外观的资源,但遗憾的是,它们目前没有被泄露。幸运的是,我们拥有 Longhorn build 5048 的 Aero Glass 资源,可以对其进行 Photoshop 处理,以匹配私有 pre-reset Aero 主题。一旦我们将这些 Jade 资源替换为 Glass 资源,我们将看到窗框被截断:


为什么?由于 .msstyles
文件中每个 STREAM
资源的大小在这些 VARIANT
资源中是硬编码的,并且由于 Jade 资源通常比 Glass 资源小,因此加载程序将只加载和显示这些 Glass 资源的一部分。这就是为什么在安装自制 Aero 主题时,会看到几乎完全透明的窗框。一旦我们将这些硬编码的大小更改为 Glass 资源的大小,所有窗框和其他资源将正常显示,如下面的屏幕截图所示:


在改变了 UsesComposition
、用 Glass 资源取代 Jade 资源并改变了硬编码的大小之后,我们现在有了一个非常接近微软的私有 Aero 主题的主题。尽管微软对 Aero 主题严加保密,他们仍然担心可能的泄露(尽管他们采取了保护措施,该主题仍然泄露给了微软以外的人),因此他们想出了一个方法来禁止微软以外的人使用该主题。他们添加了一个叫做 DemoCheck 的东西,用于检查 Microsoft 网络共享上的某一个文件是否存在。概念很简单-如果找到该文件,则此人是在 Microsoft 工作的员工,因为他们可以访问 Microsoft 的网络共享,否则此人不是来自 Microsoft 的人员,不应被允许使用 Aero 主题。该文件的路径是主题 documentation 部分下名为 DemoCheck
的字符串。如果您试图在没有连接 Microsoft 网络共享的情况下应用私有 Aero 主题,您将看到以下错误:

为了使我们重建的 Aero 主题尽可能接近微软的私有 Aero 主题,我们需要在主题 documentation 中添加 DemoCheck
字符串。那么我们有一个问题,我们将如何使用这个主题呢?微软留下了一个叫 DemoCheckOverride
的后门,以为没人会发现。您只需浏览到 HKLM\Software\Microsoft\Windows\CurrentVersion\TheManager
,创建一个名为 DemoCheckOverride
的 Registry DWORD
,并将其值设置为 0xFADE
(或十进制 64222
)。
现在,我们有了一个完全重建的 Aero 主题,但仍然缺少一些其他 Aero 功能,即 Aero Clock Sidebar 板块、Aero/Jade Preview Pane 渐变、Aero Shell 文件夹图标。这些特性的资源在 WinHEC 版本中都是可用的(实际上是从 4066 开始的所有版本),但是加载它们的代码被删除了。幸运的是,可以对 Microsoft.Windows.WCPClient.dll
进行修补,以加载这些 Aero 资源,就像私有演示版本中的资源一样。




桌面极光更难修复,因为它是使用过时的 XAML
编译的,其中包含运行时错误,Microsoft 故意对其进行了扭曲。可以通过将 Microsoft.Windows.WCPClient.dll
中的 BAML
替换为正常工作的 BAML
来修复此问题,但不幸的是,Microsoft 没有编写用于呈现该 BAML
的代码,或者完全删除了该代码。我已经编写了一个应用程序,它可以在桌面背景上呈现桌面极光效果,就像 Aero Stars 的呈现一样,下面是它的一个快速演示:
下载
相对于在这里那里提供单独的文件,我为 WinHEC 版本(4074)制作了一个“功能包”或“演示包”。它被称为 RealAero,将定期更新。您可以下载以下最新版本:
请确保浏览到 HKLM\Software\Microsoft\Windows\CurrentVersion\TheManager
,创建一个名为 DemoCheckOverride
的 Registry DWORD
,并将其值设置为 0xFADE
(或十进制 64222
)。如果您没有,那么当您收到拒绝访问错误时,请不要向我哭诉。
对于桌面极光,您需要下载此程序并双击以启动它。只有安装了上述软件包,它才能工作。
不用说,RealAero 不仅是为版本 4074 而制作的,其他版本最终也将得到支持。我目前正致力于将 Aero 主题引入 M6 版本,如 4039。以下是一些图片:



下页是英文原文 :