Partial implementation of DllRegisterServer.

diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c
index cda45df..60afd10 100644
--- a/dlls/msxml3/main.c
+++ b/dlls/msxml3/main.c
@@ -25,6 +25,7 @@
 #include "windef.h"
 #include "winbase.h"
 #include "winuser.h"
+#include "winreg.h"
 #include "ole2.h"
 
 #include "wine/debug.h"
@@ -58,8 +59,25 @@
     return TRUE;
 }
 
+static HRESULT add_key_val( LPCSTR key, LPCSTR valname, LPCSTR value )
+{
+    HKEY hkey;
+
+    if (RegCreateKeyA( HKEY_CLASSES_ROOT, key, &hkey ) != ERROR_SUCCESS) return E_FAIL;
+    RegSetValueA( hkey, valname, REG_SZ, value, strlen( value ) + 1 );
+    RegCloseKey( hkey );
+    return S_OK;
+}
+
 HRESULT WINAPI DllRegisterServer(void)
 {
-    FIXME("\n");
-    return S_OK;
+    LONG r;
+
+    r = add_key_val( "CLSID\\{2933BF90-7B36-11D2-B20E-00C04F983E60}",
+                     NULL,
+                     "XML DOM Document" );
+    r = add_key_val( "CLSID\\{2933BF90-7B36-11D2-B20E-00C04F983E60}\\InProcServer32",
+                     NULL,
+                     "msxml3.dll" );
+    return r;
 }
diff --git a/tools/wine.inf b/tools/wine.inf
index 9e82975..65801e3 100644
--- a/tools/wine.inf
+++ b/tools/wine.inf
@@ -2052,6 +2052,7 @@
 11,,mlang.dll,1
 11,,mshtml.dll,1
 11,,msi.dll,1
+11,,msxml3.dll,1
 11,,ole32.dll,1
 11,,oleaut32.dll,1
 11,,qcap.dll,1