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