Windows Contacts

Windows Contacts is a contact manager which is included in Windows Vista and Windows 7. It replaced and retained most of the functionality of Windows Address Book. Windows Mail integrates with it. Windows Contacts uses a new XML-based schema format where each contact appears as an individual.contact file, and can store custom information related to contacts, including pictures. It features extensibility APIs for integration with other applications and storing custom information. The legacy  
 * .wab format and the open standards,  
 * .vcf (vCard) and  
 * .csv (CSV) are also supported.

Features

 * Windows Contacts is implemented as a special folder in Windows Vista and Windows 7. It is in the Start Menu of Windows Vista and can be run in Windows 7 by searching for wab.exe in the Start Menu. Contacts can be stored in folders and groups.
 * It can import vCard, CSV, WAB and LDIF formats.
 * It can export in vCard 2.1 and CSV formats. Users can right-click a contact to quickly convert it to vCard format and send it to anyone.
 * It can print contacts in Memo, Business Card, Phone List formats.
 * Because contacts are stored in the Contacts folder simply as individual.contact files, they’re just another data type in the operating system that can be indexed and searched by Windows Search. Individual contacts can be quickly accessed from the Start menu search text box.
 * Windows Live People, the contact manager for Windows Live Messenger and Windows Live Mail can store its information in the Windows Contacts folder if the option to encrypt it is unchecked in Windows Live Messenger. Whenever contacts in Messenger are updated, they'll be updated in Windows Contacts as well. This feature however only works up to Windows Live Messenger 8.5. Windows Contacts synchronization is not supported in Windows Live Messenger 9.0.
 * Windows Contacts exposes APIs for creating new contacts, reading and writing in an existing contact, adding a "Label" in the form of a URI to a "Property" or a "Property" to a "Contact", API for synchronizing devices with Windows Contacts.

Example Windows Contact file
The following is an example of a Windows Contact file containing information for one person:

Windows Contact 1.0:   Unspecified <c:CreationDate>2009-04-01T14:20:31Z</c:CreationDate> <c:Extended xsi:nil="true" /> <c:ContactIDCollection> <c:ContactID c:ElementID="f38b1a9b-08b1-409a-b8e3-e0b9ba4be1c3"> <c:Value>5e26d97a-572b-4aea-8ee2-d225070acba0</c:Value> </c:ContactID> </c:ContactIDCollection> <c:EmailAddressCollection> <c:EmailAddress c:ElementID="ee53fca8-a876-48fb-ac92-ce30a3ce0b65"> <c:Type>SMTP</c:Type> <c:Address>forrestgump@forrestgump.com</c:Address> <c:LabelCollection> <c:Label>Preferred</c:Label> </c:LabelCollection> </c:EmailAddress> <c:EmailAddress c:ElementID="0b86ff5c-4201-460b-9eae-bc5d79dfe66d" xsi:nil="true" /> </c:EmailAddressCollection> <c:NameCollection> <c:Name c:ElementID="3aec1c79-ea8d-4ce4-b204-94246502e9d0"> <c:FormattedName>Gump, Forrest</c:FormattedName> <c:FamilyName>Gump</c:FamilyName> <c:GivenName>Forrest</c:GivenName> </c:Name> </c:NameCollection> <c:PhysicalAddressCollection> <c:PhysicalAddress c:ElementID="d63a50ea-bf80-45b1-a293-73345b58adcd"> <c:Country>United States of America</c:Country> <c:PostalCode>30314</c:PostalCode> <c:Region>LA</c:Region> <c:Locality>Baytown</c:Locality> <c:Street>100 Waters Edge</c:Street> <c:LabelCollection> <c:Label>Business</c:Label> </c:LabelCollection> </c:PhysicalAddress> <c:PhysicalAddress c:ElementID="c3c677a9-5b9d-40f5-9de2-9ad83b4ef646"> <c:Country>United States of America</c:Country> <c:PostalCode>30314</c:PostalCode> <c:Region>LA</c:Region> <c:Locality>Baytown</c:Locality> <c:Street>102 Waters Edge</c:Street> <c:LabelCollection> <c:Label>Personal</c:Label> </c:LabelCollection> </c:PhysicalAddress> </c:PhysicalAddressCollection> <c:PhoneNumberCollection> <c:PhoneNumber c:ElementID="1031f375-5317-4b15-af90-3e5b65437596"> <c:Number>(111) 555-1212</c:Number> <c:LabelCollection> <c:Label>Voice</c:Label> <c:Label>Business</c:Label> </c:LabelCollection> </c:PhoneNumber> <c:PhoneNumber c:ElementID="f939f8df-87e3-487d-9382-fde63ac3d13a"> <c:Number>(111) 555-1215</c:Number> <c:LabelCollection> <c:Label>Voice</c:Label> <c:Label>Personal</c:Label> </c:LabelCollection> </c:PhoneNumber> </c:PhoneNumberCollection> <c:UrlCollection> <c:Url c:ElementID="10791e0a-02a1-4c7a-8b13-707cee38dafe"> <c:Value>http://www.bubbagumpshrimp.com</c:Value> <c:LabelCollection> <c:Label>Business</c:Label> </c:LabelCollection> </c:Url> <c:Url c:ElementID="06ed7300-0d3e-4bf0-8dc5-f3e06248d896"> <c:Value>http://www.forrestgump.com</c:Value> <c:LabelCollection> <c:Label>Personal</c:Label> </c:LabelCollection> </c:Url> </c:UrlCollection> <c:PositionCollection> <c:Position c:ElementID="f192d6ef-31bd-4e4e-910e-77aa47734698"> <c:Department>Shrimp Department</c:Department> <c:JobTitle>Shrimp Man</c:JobTitle> <c:Company>Bubba Gump Shrimp Co.</c:Company> <c:LabelCollection> <c:Label>Business</c:Label> </c:LabelCollection> </c:Position> </c:PositionCollection> <c:PhotoCollection> <c:Photo c:ElementID="eb855b4d-e556-4dbb-ad00-527021e761a9"> <c:Value c:ContentType="image/jpeg"> /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQ YGBcU</c:Value> <c:LabelCollection> <c:Label>UserTile</c:Label> </c:LabelCollection> </c:Photo> </c:PhotoCollection> </c:contact>

The XML code could be simplified in case of data duplication.

For example if the business address and the home address are the same, it could be simplified by adding a Label Business and a Label Personal to a PhysicalAddress: <c:PhysicalAddressCollection> <c:PhysicalAddress c:ElementID="d63a50ea-bf80-45b1-a293-73345b58adcd"> <c:Country>United States of America</c:Country> <c:PostalCode>30314</c:PostalCode> <c:Region>LA</c:Region> <c:Locality>Baytown</c:Locality> <c:Street>100 Waters Edge</c:Street> <c:LabelCollection> <c:Label>Business</c:Label> <c:Label>Personal</c:Label> </c:LabelCollection> </c:PhysicalAddress> </c:PhysicalAddressCollection>

Outlook Express Export Bug
There is a known problem when exporting the Windows Address Book (WAB files) to another PC. If you have contacts organized into folders, this folder structure will not be preserved when the WAB file is imported. All contacts will be preserved, however, leaving some with a considerable task of manually reconstructing the folders and moving addresses back into their rightful places. See: http://support.microsoft.com/kb/249670

A solution for Windows versions still using WAB files as their address book is to copy, not export/import, the WAB files to their correct location. This often preserves the folder structure. Most unfortunately, in Windows Live Mail this does not work as WLM doesn't use WAB.