# MSSTYLES

MSSTYLES is a Microsoft file format, that contains the bitmaps and metadata for the Windows XP skinning engine, first introduced in Windows Whistler Build 2250.
The engine, in its unmodified state, only fully applies .msstyles files that have been digitally signed by Microsoft, such as Luna or the Zune theme. The default Windows XP style is known as Luna, but additional custom-made styles are available on the Internet – however, few are digitally signed. Four other signed styles for Windows XP include Royale (Media Center Edition) (Energy Blue), Royale Noir, Windows Embedded Standard CTP Refresh, and the Zune Style.
Unsigned styles can be used via various methods, by means of manually patching or replacing system files or automatically by one of the programs made for this purpose. These programs are usually called "UxTheme patchers" from the name of the XP library that required patching, UxTheme.dll, despite that recent Windows versions require patches to different files. Many popular and freely distributed patchers can be found online, often using different ways to enable custom themes.
Windows Vista and later also use .msstyles files for skinning (like the Aero.msstyles file), however the format of these files is significantly different, so .msstyles files are not transferable between Windows Vista and Windows XP. This version of .msstyles file contains PNG images and metadata.
There is a manual way to replace three DLL files (uxtheme.dll, shsvcs.dll and themeui.dll) to use unsigned custom visual styles in Windows Vista.

## File format
### Windows XP

.msstyles files are in the Portable Executable format, however they don't contain any executable code, and as such are architecture neutral. Microsoft provided styles contain PE version metadata, despite Explorer not displaying this data for .msstyles files in recent Windows versions. PE signing is not used, instead a custom signature is appended to the file.
Theme properties are stored in INI format in TEXTFILE resources inside the file. In these INI files, the section title refers to a "class name" (much like CSS). Microsoft never ran these files through any kind of minifier or preprocessor when compiling these themes, so the comments are intact and you can read them if you open the theme with a PE resource editor, such as Resource Hacker.
Here is a snippet from NORMALBLUE_INI from the default Luna theme, which controls the default button style:
Any ImageFile definitions are also unchanged from the source INI files, resulting in it representing a file path. ImageFile = Blue\button.bmp points to the BLUE_BUTTON_BMP bitmap resource.
As mentioned before, Windows XP/Server 2003 .msstyles files can be edited with a regular PE resource editor, such as Resource Hacker.

#### Signature format

Offsets in the following table are relative to end of file.
| Offset hex | Offset dec | Size | Purpose |
| −N | -N | 128 bytes | Cryptographic signature with "Microsoft Visual Style Signature" key |
| −10 | −16 | 4 bytes | Magic number, must be 0x84692426 |
| −0C | −12 | 4 bytes | N − 16, the negative distance of signature from magic. |
| −08 | −8 | 8 bytes | Total file size |

### Windows Vista and later

In Windows Vista and later, .msstyles files are still Portable Executable files with no code, however the format of the actual theme part is entirely different. Bitmaps are no longer used in favor of PNG images. The properties themselves are also no longer stored in text resources, and as such, unlike the previous format, .msstyles files made for Windows Vista and later cannot be edited to the fullest extent with a regular PE resource editor.
Two programs that can edit these files are msstyleEditor and Vista Style Builder. The former is free and open-source, whereas the latter is paid, however with more features than msstyleEditor, such as being able to add and remove classes.