Back to the main page

Table Of Contents

Intro

This is a utility that is nothing much by itself, but has helped me on several occasions. The goal is very simple: detect changes in the names that are defined in the Outlook global address book. This can be very useful, especially if you work in a company with strict security policies when people leave the company (voluntarily or not). By taking a 'checkpoint' from time to time and comparing these checkpoints over time, monitoring 'who has left the building' becomes a very easy task.

My approach requires two steps : First you dump the addressbook to file (this is your baseline). A couple of days later you dump the address book to another file and you diff the two versions. Simple !

Dumping the Addressbook

For this I wrote a small C++ program (OK, I have to be honest, I found some sourcecode while searching the internet and modified it to my need). Initially I had a vbs script, but with such a script, Outlook would always prompt me if I wanted to allow that script access to the addressbook. When using MAPI, this problem disappears...

You can either download the sourcecode here (MS Visual Studio project file), or you can download a compiled version if the program here.

Unzip the program in a folder of your choice and open a command prompt in that folder. After you have done that, run 'MAPIAddressList' and redirect the output to a file. (like this : MAPIAddressList >file1.txt)

After the program finishes, file1.txt should have all items in the Global Address List. At a later time you should get another dump so you can diff both files

Diff two versions

When you have two versions of the addressbook (for example file1.txt and file2.txt), you probably want to diff them. If you work in a large company, these lists could contain 1000's of items and since you are only interested in the delta's between two files, you will need a little utility to find the difference. If you have UNIX utilities installed (cygwin for example), you could use diff ... but if you don't, I wrote a very simple perl script that would do just that. Of course then you need perl (ActiveState for example) installed on your machine. If you are interested in the diff utility, you can download it here.

Just unzip the utility in the same folder as your MAPIAddressList and run "difflists.pl file2.txt file1.txt". As far as I know, that's as simple as it gets... have fun with these tools if you can use them.

Back to the main page