diff --git a/.gitignore b/.gitignore
index c15e617..b57ea54 100644
--- a/.gitignore
+++ b/.gitignore
@@ -135,6 +135,7 @@
 dlls/rpcrt4/tests/server_c.c
 dlls/rpcrt4/tests/server_s.c
 dlls/shdocvw/shdocvw_v1.tlb
+dlls/shell32/AUTHORS
 dlls/stdole2.tlb/std_ole_v2.tlb
 dlls/stdole32.tlb/std_ole_v1.tlb
 dlls/sti/sti_wia.h
diff --git a/Makefile.in b/Makefile.in
index f8d760d..eec29bc 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -73,6 +73,8 @@
 tools tools/wmc tools/wrc: libs/wine
 tools/widl tools/wmc tools/wrc: libs/wpp
 
+dlls/shell32/Makefile dlls/shell32/__depend__: dlls/shell32/AUTHORS
+
 $(MAKEDEP): include/config.h tools/Makefile
 	@cd $(TOOLSDIR)/tools && $(MAKE) makedep$(TOOLSEXT)
 
diff --git a/configure b/configure
index 4d89bd8..9b1cb22 100755
--- a/configure
+++ b/configure
@@ -14569,6 +14569,8 @@
 "crosstest:
 	@echo \"crosstest is not supported (mingw not installed?)\" && false"
 fi
+ac_config_links="$ac_config_links dlls/shell32/AUTHORS:AUTHORS"
+wine_fn_config_symlink dlls/shell32/AUTHORS
 ac_config_links="$ac_config_links dlls/wineps.drv/generic.ppd:dlls/wineps.drv/generic.ppd"
 test "$srcdir" = "." || wine_fn_config_symlink dlls/wineps.drv/generic.ppd
 if test "x$enable_fonts" != xno; then
@@ -15962,6 +15964,7 @@
   case $ac_config_target in
     "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
     "include/stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS include/stamp-h" ;;
+    "dlls/shell32/AUTHORS") CONFIG_LINKS="$CONFIG_LINKS dlls/shell32/AUTHORS:AUTHORS" ;;
     "dlls/wineps.drv/generic.ppd") CONFIG_LINKS="$CONFIG_LINKS dlls/wineps.drv/generic.ppd:dlls/wineps.drv/generic.ppd" ;;
     "fonts/marlett.ttf") CONFIG_LINKS="$CONFIG_LINKS fonts/marlett.ttf:fonts/marlett.ttf" ;;
     "fonts/symbol.ttf") CONFIG_LINKS="$CONFIG_LINKS fonts/symbol.ttf:fonts/symbol.ttf" ;;
diff --git a/configure.ac b/configure.ac
index f0ebc03..04ed14f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2263,6 +2263,7 @@
 
 AC_CONFIG_COMMANDS([include/stamp-h], [echo timestamp > include/stamp-h])
 
+WINE_CONFIG_SYMLINK(dlls/shell32/AUTHORS,AUTHORS)
 WINE_CONFIG_SYMLINK(dlls/wineps.drv/generic.ppd)
 WINE_CONFIG_SYMLINK(fonts/marlett.ttf,,enable_fonts)
 WINE_CONFIG_SYMLINK(fonts/symbol.ttf,,enable_fonts)
diff --git a/dlls/shell32/.gitignore b/dlls/shell32/.gitignore
deleted file mode 100644
index a6683e2..0000000
--- a/dlls/shell32/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/authors.c
diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in
index a101c75..1997c01 100644
--- a/dlls/shell32/Makefile.in
+++ b/dlls/shell32/Makefile.in
@@ -106,14 +106,4 @@
 	shortcut.svg \
 	trash_file.svg
 
-EXTRA_OBJS = authors.o
-
 @MAKE_DLL_RULES@
-
-authors.c: $(top_srcdir)/AUTHORS
-	(LC_ALL=C; export LC_ALL; echo 'const char * const SHELL_Authors[] = {' && \
-	 sed -e '1,2d' -e 's/\(.*\)/  \"\1\",/' $(top_srcdir)/AUTHORS && \
-	 echo '  0 };') >$@ || ($(RM) $@ && false)
-
-clean::
-	$(RM) authors.c
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index 7d78ab5..227b63e 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -51,8 +51,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
 
-extern const char * const SHELL_Authors[];
-
 /*************************************************************************
  * CommandLineToArgvW            [SHELL32.@]
  *
@@ -932,6 +930,34 @@
     return DISP_E_MEMBERNOTFOUND;
 }
 
+static void add_authors( HWND list )
+{
+    static const WCHAR eol[] = {'\r','\n',0};
+    static const WCHAR authors[] = {'A','U','T','H','O','R','S',0};
+    WCHAR *strW, *start, *end;
+    HRSRC rsrc = FindResourceW( shell32_hInstance, authors, (LPCWSTR)RT_RCDATA );
+    char *strA = LockResource( LoadResource( shell32_hInstance, rsrc ));
+    DWORD sizeW, sizeA = SizeofResource( shell32_hInstance, rsrc );
+
+    if (!strA) return;
+    sizeW = MultiByteToWideChar( CP_UTF8, 0, strA, sizeA, NULL, 0 ) + 1;
+    if (!(strW = HeapAlloc( GetProcessHeap(), 0, sizeW * sizeof(WCHAR) ))) return;
+    MultiByteToWideChar( CP_UTF8, 0, strA, sizeA, strW, sizeW );
+    strW[sizeW - 1] = 0;
+
+    start = strpbrkW( strW, eol );  /* skip the header line */
+    while (start)
+    {
+        while (*start && strchrW( eol, *start )) start++;
+        if (!*start) break;
+        end = strpbrkW( start, eol );
+        if (end) *end++ = 0;
+        SendMessageW( list, LB_ADDSTRING, -1, (LPARAM)start );
+        start = end;
+    }
+    HeapFree( GetProcessHeap(), 0, strW );
+}
+
 /*************************************************************************
  * AboutDlgProc            (internal)
  */
@@ -952,7 +978,6 @@
 
             if (info)
             {
-                const char* const *pstr = SHELL_Authors;
                 SendDlgItemMessageW(hWnd, stc1, STM_SETICON,(WPARAM)info->hIcon, 0);
                 GetWindowTextW( hWnd, template, sizeof(template)/sizeof(WCHAR) );
                 sprintfW( buffer, template, info->szApp );
@@ -968,13 +993,7 @@
                 hWndCtl = GetDlgItem(hWnd, IDC_ABOUT_LISTBOX);
                 SendMessageW( hWndCtl, WM_SETREDRAW, 0, 0 );
                 SendMessageW( hWndCtl, WM_SETFONT, (WPARAM)info->hFont, 0 );
-                while (*pstr)
-                {
-                    /* authors list is in utf-8 format */
-                    MultiByteToWideChar( CP_UTF8, 0, *pstr, -1, buffer, sizeof(buffer)/sizeof(WCHAR) );
-                    SendMessageW( hWndCtl, LB_ADDSTRING, -1, (LPARAM)buffer );
-                    pstr++;
-                }
+                add_authors( hWndCtl );
                 SendMessageW( hWndCtl, WM_SETREDRAW, 1, 0 );
             }
         }
diff --git a/dlls/shell32/shres.rc b/dlls/shell32/shres.rc
index 11cc344..6ff4d98 100644
--- a/dlls/shell32/shres.rc
+++ b/dlls/shell32/shres.rc
@@ -125,3 +125,6 @@
 
 /* @makedep: searching.avi */
 IDR_AVI_FILEDELETE AVI searching.avi
+
+/* @makedep: AUTHORS */
+AUTHORS RCDATA AUTHORS
diff --git a/tools/make_makefiles b/tools/make_makefiles
index 4673fea..7084258 100755
--- a/tools/make_makefiles
+++ b/tools/make_makefiles
@@ -90,6 +90,7 @@
     "Makefile",
     "dlldata.c",
     "dlls/*/*.def",
+    "dlls/shell32/AUTHORS",
     "*/*/tests/*crosstest.exe",
     "*/*/tests/testlist.c",
     "include/config.h",
