The password notification DLL I developed for Active Directory worked like a charm together with its associated Web service. When a user changes her password on Windows, the password notification DLL invokes a Web service which sets the same password in our OpenLDAP directory as well as in the Domino directory (also via LDAP). Did you notice that I wrote worked like a charm? As Microsoft has (possibly rightly so) decided to supply 64 bit versions of Windows Server only in the future, dear colleagues decided that 64 bit is the right way to go now. Now, I personally have as much experience with 64 bit Windows as with optical surgery on dead skunks, so I simply went ahead and installed my DLL. Nothing going. It didn’t work. The setup finished quietly, but I couldn’t find the damn DLL nor could I find the registry keys the installer created. I was going to stamp on Simon (the friendly guy who wrote the installer), when we realized that it had, in fact, correctly been installed as a 32 bit DLL with its registry keys in the WoW (I know what that stands for: “Wow! Where did that go?”) tree of HKLM. The rest of the story is messy. I spent the whole afternoon and a large part of the following day swearing in five languages. (Did you know that on 64-bit DOS 7 the directory is still called system_32_? Need I say more?) To the rescue came a Windows 64 bit port of gcc from the MingW project, which I dropped over an existing MingW (32 bit) installation – that bit was easy. Should you have to do it, I recommend you

  • Install a copy of Cygwin with Perl, Mingw support, GCC and an editor.
  • Use the MingW-5.1.x installer to install the Windows 32 compiler into C:\mingw
  • Grab MSYS-1.0.10 and install that anywhere you like.
  • Download the 64 bit version of MingW and unzip that into the C:\Mingw directory. (The one I used was named

I then grabbed a snapshot of OpenSSL and tried to get that built. I wouldn’t have managed but for two tips: this message explains what the magic ./Configure incantation is (but note: this works on the _SNAP_shots only!), and the second message explains how to modify the script if you have an older snapshot. I then had to muck about with copying include files into the include/openssl directory to get rid of the symbolic links Cygwin created, and the rest was a breeze. Next up: Curl and libCurl. I used the current version and unzipped that, and I configured it with:

./configure \
       --host=x86_64-pc-mingw32 \
       --with-ssl=/TEMP/notif/opensslW64/ \

Note that pathnames must be understood by MingW, i.e. they are DOS pathnames relative to the Windows root and not necessarily relative to Cygwin’s notion of the directory structure. In other words, the /TEMP above is in fact C:\Temp! (I mention this in case you run out of four-letter words.) The rest was a cinch; took my code, massaged its Makefile a bit, makeed it, copied to the Windows server, rebooted that, and then fixed a pointer error in my code. Am I happy? Yes. Am I tired? Very.

LDAP, DomiNotes, Software, and Security :: 30 Jan 2009 :: e-mail