The Data1 member of the GUID struct needs to be an unsigned int too for Win64 compatibility.
diff --git a/dlls/shell32/classes.c b/dlls/shell32/classes.c
index 3fb37db..db4ce80 100644
--- a/dlls/shell32/classes.c
+++ b/dlls/shell32/classes.c
@@ -210,7 +210,7 @@
 static BOOL HCR_RegOpenClassIDKey(REFIID riid, HKEY *hkey)
 {
 	char	xriid[50];
-    sprintf( xriid, "CLSID\\{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+    sprintf( xriid, "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
                  riid->Data1, riid->Data2, riid->Data3,
                  riid->Data4[0], riid->Data4[1], riid->Data4[2], riid->Data4[3],
                  riid->Data4[4], riid->Data4[5], riid->Data4[6], riid->Data4[7] );