Take a stab at implementing OleSetAutoConvert.

diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index ad13331..52f36fd 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -1976,21 +1976,68 @@
  */
 HRESULT WINAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew)
 {
-  HKEY	hkey;
-  char	buf[200];
-  WCHAR	wbuf[200];
-  DWORD	len;
+    HKEY hkey = 0;
+    char buf[200];
+    WCHAR wbuf[200];
+    DWORD len;
+    HRESULT res = S_OK;
 
-  sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]);
-  if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey))
-      return REGDB_E_CLASSNOTREG;
-  len = 200;
-  if (RegQueryValueA(hkey,"AutoConvertTo",buf,&len))
-      return REGDB_E_KEYMISSING;
-  RegCloseKey(hkey);
-  MultiByteToWideChar( CP_ACP, 0, buf, -1, wbuf, sizeof(wbuf)/sizeof(WCHAR) );
-  CLSIDFromString(wbuf,pClsidNew);
-  return S_OK;
+    sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]);
+    if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey))
+    {
+        res = REGDB_E_CLASSNOTREG;
+	goto done;
+    }
+    len = 200;
+    /* we can just query for the default value of AutoConvertTo key like that,
+       without opening the AutoConvertTo key and querying for NULL (default) */
+    if (RegQueryValueA(hkey,"AutoConvertTo",buf,&len))
+    {
+        res = REGDB_E_KEYMISSING;
+	goto done;
+    }
+    MultiByteToWideChar( CP_ACP, 0, buf, -1, wbuf, sizeof(wbuf)/sizeof(WCHAR) );
+    CLSIDFromString(wbuf,pClsidNew);
+done:
+  if (hkey) RegCloseKey(hkey);
+
+  return res;
+}
+
+/******************************************************************************
+ *              OleSetAutoConvert        [OLE32.126]
+ */
+HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew)
+{
+    HKEY hkey = 0, hkeyConvert = 0;
+    char buf[200], szClsidNew[200];
+    HRESULT res = S_OK;
+
+    TRACE("(%p,%p);\n", clsidOld, clsidNew);
+    sprintf(buf,"CLSID\\");WINE_StringFromCLSID(clsidOld,&buf[6]);
+    WINE_StringFromCLSID(clsidNew, szClsidNew);
+    if (RegOpenKeyA(HKEY_CLASSES_ROOT,buf,&hkey))
+    {
+        res = REGDB_E_CLASSNOTREG;
+	goto done;
+    }
+    if (RegCreateKeyA(hkey, "AutoConvertTo", &hkeyConvert))
+    {
+        res = REGDB_E_WRITEREGDB;
+	goto done;
+    }
+    if (RegSetValueExA(hkeyConvert, NULL, 0,
+                            REG_SZ, (LPBYTE)szClsidNew, strlen(szClsidNew)+1))
+    {
+        res = REGDB_E_WRITEREGDB;
+	goto done;
+    }
+
+done:
+    if (hkeyConvert) RegCloseKey(hkeyConvert);
+    if (hkey) RegCloseKey(hkey);
+
+    return res;
 }
 
 /***********************************************************************
diff --git a/dlls/ole32/ole2stubs.c b/dlls/ole32/ole2stubs.c
index e96f6c4..978f953 100644
--- a/dlls/ole32/ole2stubs.c
+++ b/dlls/ole32/ole2stubs.c
@@ -67,15 +67,6 @@
 }
 
 /******************************************************************************
- *              OleSetAutoConvert        [OLE32.@]
- */
-HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew)
-{
-    FIXME("(%p,%p), stub!\n", clsidOld, clsidNew);
-    return S_OK;
-}
-
-/******************************************************************************
  *              IsAccelerator        [OLE32.75]
  */
 BOOL WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD* lpwCmd)