diff --git a/dlls/user/misc.c b/dlls/user/misc.c
index bec20ff..9c36273 100644
--- a/dlls/user/misc.c
+++ b/dlls/user/misc.c
@@ -26,11 +26,39 @@
 #include "wingdi.h"
 #include "winuser.h"
 #include "winerror.h"
+#include "winnls.h"
 
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(win);
 
+/* callback to allow EnumDesktopsA to use EnumDesktopsW */
+typedef struct {
+    DESKTOPENUMPROCA lpEnumFunc;
+    LPARAM lParam;
+} ENUMDESKTOPS_LPARAM;
+
+/* EnumDesktopsA passes this callback function to EnumDesktopsW.
+ * It simply converts the string to ASCII and calls the callback
+ * function provided by the original caller
+ */
+static BOOL CALLBACK EnumDesktopProcWtoA(LPWSTR lpszDesktop, LPARAM lParam)
+{
+    LPSTR buffer;
+    INT   len;
+    BOOL  ret;
+    ENUMDESKTOPS_LPARAM *data = (ENUMDESKTOPS_LPARAM *)lParam;
+
+    len = WideCharToMultiByte(CP_ACP, 0, lpszDesktop, -1, NULL, 0, NULL, NULL);
+    if (!(buffer = HeapAlloc( GetProcessHeap(), 0, len))) return FALSE;
+    WideCharToMultiByte(CP_ACP, 0, lpszDesktop, -1, buffer, len, NULL, NULL);
+
+    ret = data->lpEnumFunc(buffer, data->lParam);
+
+    HeapFree(GetProcessHeap(), 0, buffer);
+    return ret;
+}
+
 /**********************************************************************
  * SetLastErrorEx [USER32.@]  Sets the last-error code.
  *
@@ -173,6 +201,30 @@
     return 0;
 }
 
+/******************************************************************************
+ *              EnumDesktopsA [USER32.@]
+ */
+BOOL WINAPI EnumDesktopsA( HWINSTA hwinsta, DESKTOPENUMPROCA lpEnumFunc,
+                    LPARAM lParam )
+{
+    ENUMDESKTOPS_LPARAM caller_data;
+
+    caller_data.lpEnumFunc = lpEnumFunc;
+    caller_data.lParam     = lParam;
+    
+    return EnumDesktopsW(hwinsta, EnumDesktopProcWtoA, (LPARAM) &caller_data);
+}
+
+/******************************************************************************
+ *              EnumDesktopsW [USER32.@]
+ */
+BOOL WINAPI EnumDesktopsW( HWINSTA hwinsta, DESKTOPENUMPROCW lpEnumFunc,
+                    LPARAM lParam )
+{
+    FIXME("%p,%p,%lx): stub\n",hwinsta,lpEnumFunc,lParam);
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
+}
 
 /******************************************************************************
  *		SetUserObjectInformationA   (USER32.@)
diff --git a/dlls/user/user32.spec b/dlls/user/user32.spec
index d9381ad..e7e8e7a 100644
--- a/dlls/user/user32.spec
+++ b/dlls/user/user32.spec
@@ -180,8 +180,8 @@
 @ stub EndTask
 @ stdcall EnumChildWindows(long ptr long)
 @ stdcall EnumClipboardFormats(long)
-@ stub EnumDesktopsA
-@ stub EnumDesktopsW
+@ stdcall EnumDesktopsA(ptr ptr long)
+@ stdcall EnumDesktopsW(ptr ptr long)
 @ stub EnumDisplayDeviceModesA
 @ stub EnumDisplayDeviceModesW
 @ stdcall EnumDisplayDevicesA(ptr long ptr long)
