diff --git a/reactos/lib/shell32/shell32_De.rc b/reactos/lib/shell32/shell32_De.rc index fb86173a393..4ed1ff687f1 100644 --- a/reactos/lib/shell32/shell32_De.rc +++ b/reactos/lib/shell32/shell32_De.rc @@ -41,7 +41,7 @@ FONT 8, "Helv" CONTROL "", 12298, "COMBOBOX", WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP PUSHBUTTON "Löschen", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP - PUSHBUTTON "&Schmökern...", 12288, 170, 63, 50, 14, WS_TABSTOP + PUSHBUTTON "&Suchen...", 12288, 170, 63, 50, 14, WS_TABSTOP } /* Namen der Header für die Shellviews */ diff --git a/reactos/lib/shell32/shelllink.c b/reactos/lib/shell32/shelllink.c index 227ced6c301..4b55879e562 100644 --- a/reactos/lib/shell32/shelllink.c +++ b/reactos/lib/shell32/shelllink.c @@ -19,7 +19,7 @@ * * NOTES * Nearly complete informations about the binary formats - * of .lnk files avaiable at http://www.wotsit.org + * of .lnk files available at http://www.wotsit.org * */ diff --git a/reactos/lib/shell32/shfldr_fs.c b/reactos/lib/shell32/shfldr_fs.c index c13afa3a76e..ec48409e31a 100644 --- a/reactos/lib/shell32/shfldr_fs.c +++ b/reactos/lib/shell32/shfldr_fs.c @@ -602,22 +602,33 @@ void _FS_ProcessDisplayFilename(LPSTR szPath, DWORD dwFlags) DWORD dwDataSize = sizeof (DWORD); BOOL doHide = FALSE; /* The default value is FALSE (win98 at least) */ - LPSTR ext = PathFindExtensionA(szPath); - if (ext) { - if (!strcasecmp(ext,".lnk") || !strcasecmp(ext,".url")) /*FIXME read from registry */ - doHide = TRUE; - } - - /* XXX should it do this only for known file types? -- that would make it even slower! */ - /* XXX That's what the prompt says!! */ - if (!doHide && !RegCreateKeyExA (HKEY_CURRENT_USER, + if (!RegCreateKeyExA (HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0)) { if (!RegQueryValueExA (hKey, "HideFileExt", 0, 0, (LPBYTE) & dwData, &dwDataSize)) doHide = dwData; + RegCloseKey (hKey); } + if (!doHide) { + LPSTR ext = PathFindExtensionA(szPath); + + if (ext) { + HKEY hkey; + char classname[MAX_PATH]; + LONG classlen = MAX_PATH; + + if (!RegQueryValueA(HKEY_CLASSES_ROOT, ext, classname, &classlen)) + if (!RegOpenKeyA(HKEY_CLASSES_ROOT, classname, &hkey)) { + if (!RegQueryValueExA(hkey, "NeverShowExt", 0, NULL, NULL, NULL)) + doHide = TRUE; + + RegCloseKey(hkey); + } + } + } + if (doHide && szPath[0] != '.') PathRemoveExtensionA (szPath); }