1<?xml version="1.0" encoding="iso-8859-1"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 4<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="eng"> 5<head> 6<meta name="author" content="Stuart Caie" /> 7<title>Windows CE installation cabinet (.CAB) file format</title> 8</head> 9<body> 10 11<h1>Windows CE installation cabinet (.CAB) file format</h1> 12 13<h2>Table of Contents</h2> 14<ul> 15<li><a href="#about">About the format</a></li> 16<li><a href="#cab_format">Overall cabinet file format</a></li> 17<li><a href="#cab_contents">Cabinet file contents</a></li> 18<li><a href="#000_format">Format of the .000 file</a> 19 <ul> 20 <li><a href="#header">The fixed size header</a></li> 21 <li><a href="#appname">The APPNAME string</a>.</li> 22 <li><a href="#provider">The PROVIDER string</a>.</li> 23 <li><a href="#unsupported">The UNSUPPORTED multi string</a>.</li> 24 <li><a href="#strings">The STRINGS section</a></li> 25 <li><a href="#dirs">The DIRS section</a></li> 26 <li><a href="#files">The FILES section</a></li> 27 <li><a href="#reghives">The REGHIVES section</a></li> 28 <li><a href="#regkeys">The REGKEYS section</a></li> 29 <li><a href="#links">The LINKS section</a></li> 30 </ul> 31</li> 32<li><a href="#app_a">Appendix A: a list of processor architectures</a></li> 33<li><a href="#app_b">Appendix B: a list of %CEn% shortcuts</a></li> 34</ul> 35 36<h2><a name="about">About the format</a></h2> 37 38<p> 39The Windows CE installation cabinet format was designed by Microsoft make 40it easy to create packaged software for the Windows CE platform. After 41generating all his executable programs, data files, help files and so on, 42a developer can then write an "installation script" which lists the name 43of the software package, where each file should be installed on the target 44device's filesystem, registry entries to make on the target system's 45Windows Registry, and so on. A tool called "CabWiz" takes the installation 46script and produces a single CAB file with a special control file stored 47in it. On the target Windows CE device, a program called 48<tt>WCELOAD.EXE</tt> will read cabinet files, install them, register them 49as installed packages, set their registry entries, and so on. 50</p> 51 52<p> 53The Cabinet format was previously developed by Microsoft for creating a 54simple archive format for packaged software, from entire operating systems 55down to ActiveX Web plugins. They also intended to displace Sun's JAR 56format for packaging Java software, but this did not succeed. 57</p> 58 59<h2><a name="cab_format">Overall cabinet file format</a></h2> 60 61<p> 62Firstly, the overall file format of a Windows CE installation cabinet is 63the standard Microsoft Cabinet file format. This was originally documented 64in the Microsoft document <tt>CABFMT.DOC</tt> as part of the Microsoft 65Cabinet SDK (<tt>CAB-SDK.EXE</tt>), it is now documented in the <a 66href="http://msdn.microsoft.com/en-us/library/bb267310%28VS.85%29.aspx">Windows 67Installer documentation</a>. The format can also be gleaned from open 68source tools and libraries such as <a 69href="https://www.cabextract.org.uk/">cabextract</a> and <a 70href="https://www.cabextract.org.uk/libmspack/">libmspack</a>. Windows CE 71installation cabinets typically use no compression (the NONE compression 72method in the cabinet specification), sometimes MSZIP compression. 73</p> 74 75<h2><a name="cab_contents">Cabinet file contents</a></h2> 76<p> 77The filenames of the files in the cabinet use the MS-DOS "8.3" convention, 78where the first eight characters in the filename come from the "true 79filename", and are followed by a period and three numeric digits. The 80digits form a decimal number from 000 to 999. The name part before the 81period is currently always 8 characters (shorter names are padded on the 82left with "0"), but this shouldn't be relied upon. Only the numeric 83extension should be used to identify the file. There should not be more 84than one file in the cabinet with the same numeric extension. As an 85example: 86</p> 87 88<table border="1"> 89<tr><th>Name in cab file</th><th>Original filename</th></tr> 90<tr><td><tt>BLKJAC~4.000</tt></td><td>--- (installation data)</td></tr> 91<tr><td><tt>BLACKJ~1.999</tt></td><td>Blackjack Setup.dll</td></tr> 92<tr><td><tt>SELFRE~1.006</tt></td><td>SelfRegister.dll</td></tr> 93<tr><td><tt>0Blkjack.005</tt></td><td>Blkjack.exe</td></tr> 94<tr><td><tt>00Sample.004</tt></td><td>Sample.BJL</td></tr> 95<tr><td><tt>WINGAM~1.003</tt></td><td>Win Game.wav</td></tr> 96<tr><td><tt>LOSEGA~1.002</tt></td><td>Lose Game.wav</td></tr> 97<tr><td><tt>BLACKJ~1.001</tt></td><td>Blackjack Help.htp</td></tr> 98</table> 99 100<p> 101The order of these files within the cab file is important. The first file 102in the cabinet should be the ".000" file. It should then be followed by 103all other files in descending numerical order of their extensions. 104</p> 105 106 107<p>These original filenames are not recoverable, they are not stored 108anywhere. The only names available are the target filenames given in <a 109href="#files">the FILES section</a> of <a href="#000_format">the .000 110file</a>.</p> 111 112<p> 113All installation data is contained in the .000 file. If a .999 file 114exists, it is an "application specific Setup.DLL"; a Microsoft standard 115Dynamic Link Library that will be loaded and executed after installation 116by the installation program. All other files are files for installation on 117the Windows CE device, and the three digits should be resolved into an 118integer "file number". 119</p> 120 121<h2><a name="000_format">Format of the .000 file</a></h2> 122 123<p> 124All multi-byte integers are little-endian. Values given in this document 125are in decimal, unless otherwise specified. The overall file format of the 126.000 file is as follows: 127</p> 128 129<ul> 130<li><a href="#header">A fixed size header</a> at file offset 0.</li> 131<li><a href="#appname">The APPNAME string</a>.</li> 132<li><a href="#provider">The PROVIDER string</a>.</li> 133<li><a href="#unsupported">The UNSUPPORTED multi string</a>.</li> 134<li><a href="#strings">The STRINGS section</a>.</li> 135<li><a href="#dirs">The DIRS section</a>.</li> 136<li><a href="#files">The FILES section</a>.</li> 137<li><a href="#reghives">The REGHIVES section</a>.</li> 138<li><a href="#regkeys">The REGKEYS section</a>.</li> 139<li><a href="#links">The LINKS section</a>.</li> 140</ul> 141 142<p> 143Only the fixed size header has a fixed file offset, all other strings and 144sections may be at any file offset, in any order. They are typically in 145the order given above. Each file offset is given in the fixed size header. 146</p> 147 148<h3><a name="header">The fixed size header</a></h3> 149<p> 150The .000 file begins at file offset 0 with a fixed size header of exactly 151100 bytes. The format of this header is as follows: 152</p> 153 154<table border="1"> 155<tr><th>Offset</th><th>Size in bytes</th><th>Description</th></tr> 156<tr><td>0</td><td>4</td><td>An ASCII signature, "MSCE". This is 0x4543534D 157as a little-endian integer.</td></tr> 158<tr><td>4</td><td>4</td><td>Unknown purpose, usually 0.</td></tr> 159<tr><td>8</td><td>4</td><td>The overall length of this .000 header file, 160in bytes.</td></tr> 161<tr><td>12</td><td>4</td><td>Unknown purpose, usually 0.</td></tr> 162<tr><td>16</td><td>4</td><td>Unknown purpose, usually 1.</td></tr> 163<tr><td>20</td><td>4</td><td>Target architecture for this cabinet: see <a 164href="#app_a">Appendix A</a>.</td></tr> 165<tr><td>24</td><td>4</td><td>Minimal version of WinCE (major version 166number) required to install this cabinet, or 0 to indicate no 167restriction.</td></tr> 168<tr><td>28</td><td>4</td><td>Minimal version of WinCE (minor version 169number) required to install this cabinet, or 0 to indicate no 170restriction.</td></tr> 171<tr><td>32</td><td>4</td><td>Maximal version of WinCE (major version 172number) required to install this cabinet, or 0 to indicate no 173restriction.</td></tr> 174<tr><td>36</td><td>4</td><td>Maximal version of WinCE (minor version 175number) required to install this cabinet, or 0 to indicate no 176restriction.</td></tr> 177<tr><td>40</td><td>4</td><td>Minmal version of WinCE (build number) 178required to install this cabinet, or 0 to indicate no 179restriction.</td></tr> 180<tr><td>44</td><td>4</td><td>Maximal version of WinCE (build number) 181required to install this cabinet, or 0 to indicate no 182restriction.</td></tr> 183<tr><td>48</td><td>2</td><td>The number of entries in <a 184href="#strings">the STRINGS section</a>.</td></tr> 185<tr><td>50</td><td>2</td><td>The number of entries in <a href="#dirs">the 186DIRS section</a>.</td></tr> 187<tr><td>52</td><td>2</td><td>The number of entries in <a href="#files">the 188FILES section</a>.</td></tr> 189<tr><td>54</td><td>2</td><td>The number of entries in <a 190href="#reghives">the REGHIVES section</a>.</td></tr> 191<tr><td>56</td><td>2</td><td>The number of entries in <a 192href="#regkeys">the REGKEYS section</a>.</td></tr> 193<tr><td>58</td><td>2</td><td>The number of entries in <a href="#links">the 194LINKS section</a>.</td></tr> 195<tr><td>60</td><td>4</td><td>The file offset of <a href="#strings">the 196STRINGS section</a> in bytes.</td></tr> 197<tr><td>64</td><td>4</td><td>The file offset of <a href="#dirs">the DIRS 198section</a> in bytes.</td></tr> 199<tr><td>68</td><td>4</td><td>The file offset of <a href="#files">the FILES 200section</a> in bytes.</td></tr> 201<tr><td>72</td><td>4</td><td>The file offset of <a href="#reghives">the 202REGHIVES section</a> in bytes.</td></tr> 203<tr><td>76</td><td>4</td><td>The file offset of <a href="#regkeys">the 204REGKEYS section</a> in bytes.</td></tr> 205<tr><td>80</td><td>4</td><td>The file offset of <a href="#links">the LINKS 206section</a>, in bytes.</td></tr> 207<tr><td>84</td><td>2</td><td>The file offset of <a href="#appname">the 208APPNAME string</a> in bytes.</td></tr> 209<tr><td>86</td><td>2</td><td>The length of <a href="#appname">the APPNAME 210string</a> in bytes, including null terminating byte.</td></tr> 211 212<tr><td>88</td><td>2</td><td>The file offset of <a href="#provider">the 213PROVIDER string</a> in bytes.</td></tr> 214<tr><td>90</td><td>2</td><td>The length of <a href="#provider">the PROVIDER 215string</a> in bytes, including null terminating byte.</td></tr> 216<tr><td>92</td><td>2</td><td>The file offset of <a href="#unsupported">the 217UNSUPPORTED multi string</a> in bytes.</td></tr> 218<tr><td>94</td><td>2</td><td>The length of <a href="#unsupported">the 219UNSUPPORTED multi string</a> in bytes, including null terminating 220byte.</td></tr> 221<tr><td>96</td><td>2</td><td>Unknown purpose, usually 0.</td></tr> 222<tr><td>98</td><td>2</td><td>Unknown purpose, usually 0.</td></tr> 223</table> 224 225<h3><a name="appname">The APPNAME string</a></h3> 226<p> 227This is a null-terminated ASCII string that gives the name of the packaged 228application. 229</p> 230 231<h3><a name="provider">The PROVIDER string</a></h3> 232<p> 233This is a null-terminated ASCII string that gives the name of the author 234or publisher of the packaged application. 235</p> 236 237<h3><a name="unsupported">The UNSUPPORTED multi string</a></h3> 238<p> 239If this string has more than zero bytes length according to the fixed size 240header, then this is a sequence of consecutive null terminated ASCII 241strings. The sequence always terminates with an empty string. Each string 242is the ASCII name of a Windows CE platform where this software is not 243supported and will not run. Platforms seen in this sequence include "PALM 244PC", "HPC", "JORDAN", "PALM PC2" and "POCKETPC". 245</p> 246 247<h3><a name="strings">The STRINGS section</a></h3> 248<p> 249The STRINGS section is a number of common ASCII strings that may be used 250in the installation data. In other sections, strings from the STRINGS 251section are referred to by their string ID. The total number of entries in 252this section is given in the fixed size header. There is no padding 253between string entries. The format of each STRING entry is as follows: 254</p> 255 256<ul> 257<li>2 bytes: An integer string ID.</li> 258<li>2 bytes: The length of the string, including the null terminator byte.</li> 259<li>X bytes: the string itself, for the length given above.</li> 260</ul> 261 262<p> 263As an example, the hexadecimal byte stream <tt>04 00 09 00 53 6F 66 74 77 26461 72 65 00</tt> decodes to "ID=4 (04 00), length=9 (09 00), 265string=Software". The hexadecimal byte stream <tt>05 00 0A 00 4D 69 63 72 2666F 73 6F 66 74 00</tt> decodes to "ID=5 (05 00), length=10 (0A 00), 267string=Microsoft". 268</p> 269 270<h3><a name="dirs">The DIRS section</a></h3> 271<p> 272The DIRS section is a list of directory paths used in the installation. In 273other sections, paths from the DIRS section are referred to by their 274directory ID. The total number of entries in this section is given in the 275fixed size header. There is no padding between directory entries. The 276format of each directory entry is as follows: 277</p> 278 279<ul> 280<li>2 bytes: An integer directory ID.</li> 281<li>2 bytes: The length of the following directory specification, in 282bytes.</li> 283<li>X bytes: A directory specification. This is simply an array of 16-bit 284(2 byte) numbers, where each number is a string ID. The final number is 285always 0, which terminates the list.</li> 286</ul> 287 288<p> 289For example, the hexidecimal byte stream <tt>01 00 0A 00 01 00 02 00 03 00 29004 00 00</tt> translates "dir ID=1 (01 00), length=10 (0A 00), 291specification={1, 2, 3, 4}". Assuming string ID 1 is "foo", string ID 2 is 292"bar", string ID 3 is "baz" and string ID 4 is "quux", the specification 293translates from {1, 2, 3, 4} to "foo\bar\baz\quux". 294</p> 295 296<p> 297The directory specification may begin with a path member of the form 298"<tt>%CEn%</tt>", where <tt>n</tt> is a decimal integer from 1 to 17. This 299is an abbreviation for one of the CE standard directories, as listed in <a 300href="#app_b">Appendix B</a>. 301</p> 302 303 304<h3><a name="files">The FILES section</a></h3> 305<p> 306The FILES section is a list of files to be installed on the target 307device. All files in the list should be installed. In other sections, 308files from the FILES section are referred to by their file ID. The total 309number of entries in this section is given in the fixed size header. There 310is no padding between file entries. The format of each file entry is as 311follows: 312</p> 313 314<ul> 315<li>2 bytes: An integer file ID. The file for installation is the file in 316the cabinet which has this integer as a three digit file extension.</li> 317<li>2 bytes: The directory ID for where this file should be installed.</li> 318<li>2 bytes: Unknown purpose, usually the same as the file ID.</li> 319 320<li>4 bytes: File flags. A 32-bit integer. The following bits are known: <br /> 321 322<table border="1"> 323<tr><th>Flag</th><th>Description</th></tr> 324<tr><td>Bit 31 (0x80000000)</td><td> If bit is set, this file is a 325reference-counting shared file. It is not deleted at uninstall time unless 326its reference count is 0.</td></tr> 327<tr><td>Bit 30 (0x40000000)</td><td>If bit is set, ignore file date 328(stored in the cabinet file) and always overwrite target (on CE 329device). Mutually exclusive with bit 29.</td></tr> 330<tr><td>Bit 29 (0x20000000)</td><td>If bit is set, do not overwrite target 331if target is newer. Mutually exclusive with bit 30.</td></tr> 332<tr><td>Bit 28 (0x10000000)</td><td>If bit is set, self-register this 333DLL.</td></tr> 334<tr><td>Bit 10 (0x00000400)</td><td>If bit is set, do not copy this file 335to the target unless the target already exists. Mutually exclusive with 336bit 4.</td></tr> 337<tr><td>Bit 4 (0x00000010)</td><td>If bit is set, do not overwrite target 338if it already exists. Mutually exclusive with bit 10.</td></tr> 339<tr><td>Bit 1 (0x00000002)</td><td>If bit is set, do not skip this 340file.</td></tr> 341<tr><td>Bit 0 (0x00000001)</td><td>If bit is set, warn the user if this 342file is skipped.</td></tr> 343</table> 344All other bits are unknown. 345</li> 346<li>2 bytes: the length of the installed file's filename, including the 347null terminator.</li> 348<li>X bytes: the installed file's filename, with the length given above. 349A null terminated ASCII string.</li> 350</ul> 351 352<h3><a name="reghives">The REGHIVES section</a></h3> 353<p> 354The REGHIVES section is a list of hives in the Windows Registry. These 355hives are then used in <a href="#regkeys">the REGKEYS section</a> for 356actual registry entries. In other sections, hives from the REGHIVES 357section are referred to by their hive ID. The total number of entries in 358this section is given in the fixed size header. There is no padding 359between hive entries. The format of each hive entry is as follows: 360</p> 361 362<ul> 363<li>2 bytes: An integer hive ID.</li> 364<li>2 bytes: The hive root, an integer from 1 to 4: 365 <ol> 366 <li>HKCR: HKEY_CLASSES_ROOT</li> 367 <li>HKCU: HKEY_CURRENT_USER</li> 368 <li>HKLM: HKEY_LOCAL_MACHINE</li> 369 <li>HKU: HKEY_USERS</li> 370 </ol> 371</li> 372<li>2 bytes: Unknown purpose, usually 0.</li> 373<li>2 bytes: Length of the registry hive specification to follow, in 374bytes.</li> 375<li>X bytes: A registry hive specification. This is simply an array of 37616-bit (2 byte) numbers, where each number is a string ID. The final 377number is always 0, which terminates the list.</li> 378</ul> 379 380<h3><a name="regkeys">The REGKEYS section</a></h3> 381<p> 382The REGKEYS is a list of registry entries -- key / data pairs -- to be 383added to the Windows Registry upon installation. All entries in the list 384should be added. The total number of entries in this section is given in 385the fixed size header. There is no padding between entries. The format of 386each entry is as follows: 387</p> 388 389<ul> 390<li>2 bytes: An integer key ID.</li> 391<li>2 bytes: The hive ID of the hive to store this entry in.</li> 392<li>2 bytes: A Boolean value, either 1 if variable substitution should be performed or 0 if not. The entry data should have substrings such as <tt>%InstallDir%</tt> or one the <tt>%CEn%</tt> values.</li> 393<li>4 bytes: The type of entry data, and flags. <br /> 394 395<table border="1"> 396<tr><th>Flag</th><th>Description</th></tr> 397<tr><td>Bit 16 set, bit 0 set (0x00010001)</td><td>This key is of type 398<tt>TYPE_DWORD</tt>, a 32-bit integer.</td></tr> 399<tr><td>Bit 16 clear, bit 0 clear (0x00000000)</td><td>This key is of type 400<tt>TYPE_SZ</tt>, a null terminated ASCII string.</td></tr> 401<tr><td>Bit 16 set, bit 0 clear (0x00010000)</td><td>This key is of type 402<tt>TYPE_MULTI_SZ</tt>, a list of null terminated ASCII strings.</td></tr> 403<tr><td>Bit 16 clear, bit 0 set (0x00000001)</td><td>This key is of type 404<tt>TYPE_BINARY</tt>, raw binary data in no particular format.</td></tr> 405<tr><td>Bit 1 (0x00000002)</td><td>This is the only known flag, 406<tt>NOCLOBBER</tt>. If this bit is set, the registry entry should not be 407overwritten if it already exists in the registry.</td></tr> 408</table> 409All other bits are undefined. 410</li> 411<li>2 bytes: The length of entry data to follow, in bytes.</li> 412<li>X bytes: Registry entry data. This begins with a null terminated ASCII 413string, giving the name of the registry key. If the empty string is used 414here, this is the default key for the given hive. Immediately following 415the null byte of the string is the data for the registry entry, whose 416format depends on the entry type given in the flags: 417 418<ul> 419<li><tt>TYPE_DWORD</tt>: four bytes, giving a single 32-bit integer.</li> 420<li><tt>TYPE_SZ</tt>: a single null terminated ASCII string.</li> 421<li><tt>TYPE_MULTI_SZ</tt>: a sequence of consecutive null terminated 422ASCII strings. The sequence always terminates with an empty string.</li> 423<li><tt>TYPE_BINARY</tt>: no specific format, just raw data.</li> 424</ul> 425</li> 426</ul> 427 428 429 430<h3><a name="links">The LINKS section</a></h3> 431<p> 432The LINKS section is a list of symbolic links to be made in the standard 433installation directories, to link to installed directories or files. The 434total number of links in this section is given in the fixed size header. 435There is no padding between links. Each link has the following format: 436</p> 437<ul> 438<li>2 bytes: An integer link ID.</li> 439<li>2 bytes: Unknown purpose.</li> 440<li>2 bytes: The base directory where the link will be stored, either 0 to 441indicate "<tt>%InstallDir%</tt>", the default directory where the 442application is installed, or a number from 1 to 17 to indicate 443"<tt>%CEn%</tt>", one of the standard installation directories as defined 444in <a href="#app_b">Appendix B</a>. The link specification, given below, 445should be added to this base directory, to get the full name of the 446link.</li> 447<li>2 bytes: Integer ID of the file or directory that the link should 448point to. It is either a file ID, or a directory ID, depending on the link 449type. If it is a directory ID, the ID 0 can be used to refer to 450<tt>%InstallDir%</tt>.</li> 451<li>2 bytes: The link type. This is 0 if the link target is a directory, 452or 1 if the link target is a file.</li> 453<li>2 bytes: The length of the link specification in bytes.</li> 454<li>X bytes: The link specification. This is simply an array of 16-bit (2 455byte) numbers, where each number is a string ID. The final number is 456always 0, which terminates the list.</li> 457</ul> 458 459<h2><a name="app_a">Appendix A: a list of processor architectures</a></h2> 460<table border="1"> 461<tr><th>Value</th><th>Description</th></tr> 462<tr><td>0</td><td>No specific architecture</td></tr> 463<tr><td>103</td><td>SHx SH3</td></tr> 464<tr><td>104</td><td>SHx SH4</td></tr> 465<tr><td>386</td><td>Intel 386</td></tr> 466<tr><td>486</td><td>Intel 486</td></tr> 467<tr><td>586</td><td>Intel Pentium</td></tr> 468<tr><td>601</td><td>PowerPC 601</td></tr> 469<tr><td>603</td><td>PowerPC 603</td></tr> 470<tr><td>604</td><td>PowerPC 604</td></tr> 471<tr><td>620</td><td>PowerPC 620</td></tr> 472<tr><td>821</td><td>Motorola 821</td></tr> 473<tr><td>1824</td><td>ARM 720</td></tr> 474<tr><td>2080</td><td>ARM 820</td></tr> 475<tr><td>2336</td><td>ARM 920</td></tr> 476<tr><td>2577</td><td>StrongARM</td></tr> 477<tr><td>4000</td><td>MIPS R4000</td></tr> 478<tr><td>10003</td><td>Hitachi SH3</td></tr> 479<tr><td>10004</td><td>Hitachi SH3E</td></tr> 480<tr><td>10005</td><td>Hitachi SH4</td></tr> 481<tr><td>21064</td><td>Alpha 21064</td></tr> 482<tr><td>70001</td><td>ARM 7TDMI</td></tr> 483</table> 484 485<h2><a name="app_b">Appendix B: a list of %CEn% shortcuts</a></h2> 486<p> 487First, for a Handheld PC: 488</p> 489 490<table border="1"> 491<tr><th>Value</th><th>Standard directory</th></tr> 492<tr><td>%CE1%</td><td>\Program Files</td></tr> 493<tr><td>%CE2%</td><td>\Windows</td></tr> 494<tr><td>%CE3%</td><td>\Windows\Desktop</td></tr> 495<tr><td>%CE4%</td><td>\Windows\StartUp</td></tr> 496<tr><td>%CE5%</td><td>\My Documents</td></tr> 497<tr><td>%CE6%</td><td>\Program Files\Accessories</td></tr> 498<tr><td>%CE7%</td><td>\Program Files\Communications</td></tr> 499<tr><td>%CE8%</td><td>\Program Files\Games</td></tr> 500<tr><td>%CE9%</td><td>\Program Files\Pocket Outlook</td></tr> 501<tr><td>%CE10%</td><td>\Program Files\Office</td></tr> 502<tr><td>%CE11%</td><td>\Windows\Programs</td></tr> 503<tr><td>%CE12%</td><td>\Windows\Programs\Accessories</td></tr> 504<tr><td>%CE13%</td><td>\Windows\Programs\Communications</td></tr> 505<tr><td>%CE14%</td><td>\Windows\Programs\Games</td></tr> 506<tr><td>%CE15%</td><td>\Windows\Fonts</td></tr> 507<tr><td>%CE16%</td><td>\Windows\Recent</td></tr> 508<tr><td>%CE17%</td><td>\Windows\Favorites</td></tr> 509</table> 510 511<p> 512For a Pocket PC version 1.0 or 2.0, as per Handheld PCs, except 513</p> 514<table border="1"> 515<tr><th>Value</th><th>Standard directory</th></tr> 516<tr><td>%CE3%</td><td><b>undefined</b></td></tr> 517<tr><td>%CE9%</td><td><b>undefined</b></td></tr> 518<tr><td>%CE10%</td><td><b>undefined</b></td></tr> 519<tr><td>%CE11%</td><td>\Windows\Start Menu\Programs</td></tr> 520<tr><td>%CE12%</td><td>\Windows\Start Menu\Accessories</td></tr> 521<tr><td>%CE13%</td><td>\Windows\Start Menu\Communications</td></tr> 522<tr><td>%CE14%</td><td>\Windows\Start Menu\Games</td></tr> 523<tr><td>%CE16%</td><td><b>undefined</b></td></tr> 524<tr><td>%CE17%</td><td>\Windows\Start Menu</td></tr> 525</table> 526 527<p> 528For a Pocket PC version 3.0, as for 1.0 or 2.0, except 529</p> 530<table border="1"> 531<tr><th>Value</th><th>Standard directory</th></tr> 532<tr><td>%CE6%</td><td><b>undefined</b></td></tr> 533<tr><td>%CE7%</td><td><b>undefined</b></td></tr> 534<tr><td>%CE8%</td><td><b>undefined</b></td></tr> 535<tr><td>%CE12%</td><td><b>undefined</b></td></tr> 536<tr><td>%CE13%</td><td><b>undefined</b></td></tr> 537<tr><td>%CE16%</td><td><b>undefined</b></td></tr> 538</table> 539 540</body> 541</html> 542