From a6b1efe4da5b2d0ea66fefef3b17a7fcdcef194e Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sun, 18 Nov 2007 14:17:39 +0000 Subject: [PATCH] - implement setting values WantsFORDisplay && HideAsDeletePerUser (not yet used) - register control panel shell folder - fix a memory leak svn path=/trunk/; revision=30547 --- reactos/dll/win32/shell32/lang/bg-BG.rc | 1 + reactos/dll/win32/shell32/lang/ca-ES.rc | 1 + reactos/dll/win32/shell32/lang/cs-CZ.rc | 1 + reactos/dll/win32/shell32/lang/da-DK.rc | 1 + reactos/dll/win32/shell32/lang/de-DE.rc | 1 + reactos/dll/win32/shell32/lang/en-US.rc | 1 + reactos/dll/win32/shell32/lang/eo-EO.rc | 1 + reactos/dll/win32/shell32/lang/es-ES.rc | 1 + reactos/dll/win32/shell32/lang/fi-FI.rc | 1 + reactos/dll/win32/shell32/lang/fr-FR.rc | 1 + reactos/dll/win32/shell32/lang/hu-HU.rc | 1 + reactos/dll/win32/shell32/lang/it-IT.rc | 1 + reactos/dll/win32/shell32/lang/ja-JP.rc | 1 + reactos/dll/win32/shell32/lang/ko-KO.rc | 1 + reactos/dll/win32/shell32/lang/nb-NO.rc | 1 + reactos/dll/win32/shell32/lang/nl-NL.rc | 1 + reactos/dll/win32/shell32/lang/pl-PL.rc | 1 + reactos/dll/win32/shell32/lang/pt-BR.rc | 1 + reactos/dll/win32/shell32/lang/pt-PT.rc | 1 + reactos/dll/win32/shell32/lang/ru-RU.rc | 1 + reactos/dll/win32/shell32/lang/sk-SK.rc | 1 + reactos/dll/win32/shell32/lang/sl-SI.rc | 1 + reactos/dll/win32/shell32/lang/sv-SE.rc | 1 + reactos/dll/win32/shell32/lang/tr-TR.rc | 1 + reactos/dll/win32/shell32/lang/uk-UA.rc | 1 + reactos/dll/win32/shell32/lang/wa-WA.rc | 1 + reactos/dll/win32/shell32/lang/zh-CN.rc | 1 + reactos/dll/win32/shell32/lang/zh-TW.rc | 1 + reactos/dll/win32/shell32/regsvr.c | 32 ++++++++++++++++++++-- reactos/dll/win32/shell32/shfldr_desktop.c | 2 +- reactos/dll/win32/shell32/shresdef.h | 4 ++- 31 files changed, 62 insertions(+), 4 deletions(-) diff --git a/reactos/dll/win32/shell32/lang/bg-BG.rc b/reactos/dll/win32/shell32/lang/bg-BG.rc index fa7a1bb8809..4598bbada4d 100644 --- a/reactos/dll/win32/shell32/lang/bg-BG.rc +++ b/reactos/dll/win32/shell32/lang/bg-BG.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Работна площ" IDS_MYCOMPUTER "Моят компютър" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Големи значета" diff --git a/reactos/dll/win32/shell32/lang/ca-ES.rc b/reactos/dll/win32/shell32/lang/ca-ES.rc index 8e80c6572c2..60b4512b761 100644 --- a/reactos/dll/win32/shell32/lang/ca-ES.rc +++ b/reactos/dll/win32/shell32/lang/ca-ES.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/cs-CZ.rc b/reactos/dll/win32/shell32/lang/cs-CZ.rc index 5a9f87fcd5f..c2a9509bd81 100644 --- a/reactos/dll/win32/shell32/lang/cs-CZ.rc +++ b/reactos/dll/win32/shell32/lang/cs-CZ.rc @@ -358,6 +358,7 @@ BEGIN IDS_DESKTOP "Plocha" IDS_MYCOMPUTER "Tento poинtaи" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Vedle sebe" diff --git a/reactos/dll/win32/shell32/lang/da-DK.rc b/reactos/dll/win32/shell32/lang/da-DK.rc index 0b8d5b96870..dff0176463a 100644 --- a/reactos/dll/win32/shell32/lang/da-DK.rc +++ b/reactos/dll/win32/shell32/lang/da-DK.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/de-DE.rc b/reactos/dll/win32/shell32/lang/de-DE.rc index 722bff67728..807c9d68dc4 100644 --- a/reactos/dll/win32/shell32/lang/de-DE.rc +++ b/reactos/dll/win32/shell32/lang/de-DE.rc @@ -359,6 +359,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "Arbeitsplatz" IDS_RECYCLEBIN_FOLDER_NAME "Papierkorb" + IDS_CONTROLPANEL "Systemsteuerung" /* context menus */ IDS_VIEW_LARGE "&GroЯe Symbole" diff --git a/reactos/dll/win32/shell32/lang/en-US.rc b/reactos/dll/win32/shell32/lang/en-US.rc index d96e96b19e4..7afb45f54c2 100644 --- a/reactos/dll/win32/shell32/lang/en-US.rc +++ b/reactos/dll/win32/shell32/lang/en-US.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/eo-EO.rc b/reactos/dll/win32/shell32/lang/eo-EO.rc index 1e2c1e84a12..0137b9422d9 100644 --- a/reactos/dll/win32/shell32/lang/eo-EO.rc +++ b/reactos/dll/win32/shell32/lang/eo-EO.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/es-ES.rc b/reactos/dll/win32/shell32/lang/es-ES.rc index b0e0a3d99b0..8ac91ca6dc5 100644 --- a/reactos/dll/win32/shell32/lang/es-ES.rc +++ b/reactos/dll/win32/shell32/lang/es-ES.rc @@ -358,6 +358,7 @@ BEGIN IDS_DESKTOP "Escritorio" IDS_MYCOMPUTER "Mi PC" IDS_RECYCLEBIN_FOLDER_NAME "Papelera de reciclaje" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Iconos &grandes" diff --git a/reactos/dll/win32/shell32/lang/fi-FI.rc b/reactos/dll/win32/shell32/lang/fi-FI.rc index 76ace4d5939..0bb3339958f 100644 --- a/reactos/dll/win32/shell32/lang/fi-FI.rc +++ b/reactos/dll/win32/shell32/lang/fi-FI.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Tyцpцytд" IDS_MYCOMPUTER "Oma Tietokone" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Suuret Kuvakkeet" diff --git a/reactos/dll/win32/shell32/lang/fr-FR.rc b/reactos/dll/win32/shell32/lang/fr-FR.rc index 5d3d6f98fd5..8adcf79718b 100644 --- a/reactos/dll/win32/shell32/lang/fr-FR.rc +++ b/reactos/dll/win32/shell32/lang/fr-FR.rc @@ -361,6 +361,7 @@ BEGIN IDS_DESKTOP "Bureau" IDS_MYCOMPUTER "Poste de travail" IDS_RECYCLEBIN_FOLDER_NAME "Corbeille" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Grandes icфnes" diff --git a/reactos/dll/win32/shell32/lang/hu-HU.rc b/reactos/dll/win32/shell32/lang/hu-HU.rc index d224130e9a6..126c1176fbe 100644 --- a/reactos/dll/win32/shell32/lang/hu-HU.rc +++ b/reactos/dll/win32/shell32/lang/hu-HU.rc @@ -360,6 +360,7 @@ BEGIN IDS_DESKTOP "Asztal" IDS_MYCOMPUTER "Szбmнtуgйp" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Nagy kйpek" diff --git a/reactos/dll/win32/shell32/lang/it-IT.rc b/reactos/dll/win32/shell32/lang/it-IT.rc index 282e03897e7..08fe6306d97 100644 --- a/reactos/dll/win32/shell32/lang/it-IT.rc +++ b/reactos/dll/win32/shell32/lang/it-IT.rc @@ -358,6 +358,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "Risorse del Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Icone Grandi" diff --git a/reactos/dll/win32/shell32/lang/ja-JP.rc b/reactos/dll/win32/shell32/lang/ja-JP.rc index 0aad638baf6..5c412e8cf26 100644 --- a/reactos/dll/win32/shell32/lang/ja-JP.rc +++ b/reactos/dll/win32/shell32/lang/ja-JP.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "ѓfѓXѓNѓgѓbѓv" IDS_MYCOMPUTER "ѓ}ѓC ѓRѓ“ѓsѓ…Ѓ[ѓ^" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "‘е‚«‚ўѓAѓCѓRѓ“(&G)" diff --git a/reactos/dll/win32/shell32/lang/ko-KO.rc b/reactos/dll/win32/shell32/lang/ko-KO.rc index 9d7566a926d..3491c3ba4f7 100644 --- a/reactos/dll/win32/shell32/lang/ko-KO.rc +++ b/reactos/dll/win32/shell32/lang/ko-KO.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/nb-NO.rc b/reactos/dll/win32/shell32/lang/nb-NO.rc index a2362dbde2a..c177e362a67 100644 --- a/reactos/dll/win32/shell32/lang/nb-NO.rc +++ b/reactos/dll/win32/shell32/lang/nb-NO.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Skrivebord" IDS_MYCOMPUTER "Min datamaskin" IDS_RECYCLEBIN_FOLDER_NAME "Papirkurv" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Store ikoner" diff --git a/reactos/dll/win32/shell32/lang/nl-NL.rc b/reactos/dll/win32/shell32/lang/nl-NL.rc index 4338cc95f8e..74aa3c5a019 100644 --- a/reactos/dll/win32/shell32/lang/nl-NL.rc +++ b/reactos/dll/win32/shell32/lang/nl-NL.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/pl-PL.rc b/reactos/dll/win32/shell32/lang/pl-PL.rc index d202a30e88a..bc7b5b11145 100644 --- a/reactos/dll/win32/shell32/lang/pl-PL.rc +++ b/reactos/dll/win32/shell32/lang/pl-PL.rc @@ -358,6 +358,7 @@ BEGIN IDS_DESKTOP "Pulpit" IDS_MYCOMPUTER "Mуj komputer" IDS_RECYCLEBIN_FOLDER_NAME "Kosz" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Duїe Ikony" diff --git a/reactos/dll/win32/shell32/lang/pt-BR.rc b/reactos/dll/win32/shell32/lang/pt-BR.rc index d1271e9da5e..311fab915ce 100644 --- a/reactos/dll/win32/shell32/lang/pt-BR.rc +++ b/reactos/dll/win32/shell32/lang/pt-BR.rc @@ -359,6 +359,7 @@ BEGIN IDS_DESKTOP "Бrea de trabalho" IDS_MYCOMPUTER "Meu computador" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Нcones &grandes" diff --git a/reactos/dll/win32/shell32/lang/pt-PT.rc b/reactos/dll/win32/shell32/lang/pt-PT.rc index be9d80666dd..0134339f070 100644 --- a/reactos/dll/win32/shell32/lang/pt-PT.rc +++ b/reactos/dll/win32/shell32/lang/pt-PT.rc @@ -359,6 +359,7 @@ BEGIN IDS_DESKTOP "Ambiente de trabalho" IDS_MYCOMPUTER "O Meu Computador" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Нcones &grandes" diff --git a/reactos/dll/win32/shell32/lang/ru-RU.rc b/reactos/dll/win32/shell32/lang/ru-RU.rc index 1627ef6410e..d0acf5b5d81 100644 --- a/reactos/dll/win32/shell32/lang/ru-RU.rc +++ b/reactos/dll/win32/shell32/lang/ru-RU.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Рабочий стол" IDS_MYCOMPUTER "Мой компьютер" IDS_RECYCLEBIN_FOLDER_NAME "Корзина" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "&Большие значки" diff --git a/reactos/dll/win32/shell32/lang/sk-SK.rc b/reactos/dll/win32/shell32/lang/sk-SK.rc index fbfd25996b7..b5a276d0ee2 100644 --- a/reactos/dll/win32/shell32/lang/sk-SK.rc +++ b/reactos/dll/win32/shell32/lang/sk-SK.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/sl-SI.rc b/reactos/dll/win32/shell32/lang/sl-SI.rc index 90c24ff313f..ee7c2c258ab 100644 --- a/reactos/dll/win32/shell32/lang/sl-SI.rc +++ b/reactos/dll/win32/shell32/lang/sl-SI.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/sv-SE.rc b/reactos/dll/win32/shell32/lang/sv-SE.rc index bae1e46755c..15eadb05053 100644 --- a/reactos/dll/win32/shell32/lang/sv-SE.rc +++ b/reactos/dll/win32/shell32/lang/sv-SE.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/tr-TR.rc b/reactos/dll/win32/shell32/lang/tr-TR.rc index 8d9d0bac1b0..062913529db 100644 --- a/reactos/dll/win32/shell32/lang/tr-TR.rc +++ b/reactos/dll/win32/shell32/lang/tr-TR.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Masaьstь" IDS_MYCOMPUTER "Bilgisayarэm" IDS_RECYCLEBIN_FOLDER_NAME "Зцp" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Bь&yьk Simgeler" diff --git a/reactos/dll/win32/shell32/lang/uk-UA.rc b/reactos/dll/win32/shell32/lang/uk-UA.rc index 0f86c6d9d0a..3eb40bc9a06 100644 --- a/reactos/dll/win32/shell32/lang/uk-UA.rc +++ b/reactos/dll/win32/shell32/lang/uk-UA.rc @@ -366,6 +366,7 @@ BEGIN IDS_VIEW_DETAILS "&Подробиці" IDS_SELECT "Ви&брати" IDS_OPEN "Ві&дкрити" + IDS_CONTROLPANEL "Control Panel" IDS_CREATEFOLDER_DENIED "Не вдалося створити нову папку: Відмова у доступі." IDS_CREATEFOLDER_CAPTION "Помилка при створенні нової папки" diff --git a/reactos/dll/win32/shell32/lang/wa-WA.rc b/reactos/dll/win32/shell32/lang/wa-WA.rc index 19e505bc65b..253751facff 100644 --- a/reactos/dll/win32/shell32/lang/wa-WA.rc +++ b/reactos/dll/win32/shell32/lang/wa-WA.rc @@ -357,6 +357,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/zh-CN.rc b/reactos/dll/win32/shell32/lang/zh-CN.rc index 9b01c353da5..676ee9b11df 100644 --- a/reactos/dll/win32/shell32/lang/zh-CN.rc +++ b/reactos/dll/win32/shell32/lang/zh-CN.rc @@ -358,6 +358,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/lang/zh-TW.rc b/reactos/dll/win32/shell32/lang/zh-TW.rc index bae5c47b190..60cab2b100d 100644 --- a/reactos/dll/win32/shell32/lang/zh-TW.rc +++ b/reactos/dll/win32/shell32/lang/zh-TW.rc @@ -358,6 +358,7 @@ BEGIN IDS_DESKTOP "Desktop" IDS_MYCOMPUTER "My Computer" IDS_RECYCLEBIN_FOLDER_NAME "Trash" + IDS_CONTROLPANEL "Control Panel" /* context menus */ IDS_VIEW_LARGE "Lar&ge Icons" diff --git a/reactos/dll/win32/shell32/regsvr.c b/reactos/dll/win32/shell32/regsvr.c index 6577269c19b..1e53cf1ff2a 100644 --- a/reactos/dll/win32/shell32/regsvr.c +++ b/reactos/dll/win32/shell32/regsvr.c @@ -83,6 +83,8 @@ struct regsvr_coclass #define SHELLFOLDER_WANTSFORPARSING 0x00000002 #define SHELLFOLDER_ATTRIBUTES 0x00000004 #define SHELLFOLDER_CALLFORATTRIBUTES 0x00000008 +#define SHELLFOLDER_WANTSFORDISPLAY 0x00000010 +#define SHELLFOLDER_HIDEASDELETEPERUSER 0x00000020 static HRESULT register_coclasses(struct regsvr_coclass const *list); static HRESULT unregister_coclasses(struct regsvr_coclass const *list); @@ -135,6 +137,8 @@ static WCHAR const defaulticon_keyname[] = { static WCHAR const contextmenu_keyname[] = { 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'e', 'n', 'u', 'H', 'a', 'n', 'd', 'l', 'e', 'r', 's', 0 }; static char const tmodel_valuename[] = "ThreadingModel"; static char const wfparsing_valuename[] = "WantsFORPARSING"; +static char const wfdisplay_valuename[] = "WantsFORDISPLAY"; +static char const hideasdeleteperuser_valuename[] = "HideAsDeletePerUser"; static char const attributes_valuename[] = "Attributes"; static char const cfattributes_valuename[] = "CallForAttributes"; static char const localized_valuename[] = "LocalizedString"; @@ -335,7 +339,7 @@ static HRESULT register_coclasses(struct regsvr_coclass const *list) } if (list->flags & - (SHELLFOLDER_WANTSFORPARSING|SHELLFOLDER_ATTRIBUTES|SHELLFOLDER_CALLFORATTRIBUTES)) + (SHELLFOLDER_WANTSFORPARSING|SHELLFOLDER_ATTRIBUTES|SHELLFOLDER_CALLFORATTRIBUTES|SHELLFOLDER_WANTSFORDISPLAY|SHELLFOLDER_HIDEASDELETEPERUSER)) { HKEY shellfolder_key; @@ -351,7 +355,11 @@ static HRESULT register_coclasses(struct regsvr_coclass const *list) if (list->flags & SHELLFOLDER_CALLFORATTRIBUTES) res = RegSetValueExA(shellfolder_key, cfattributes_valuename, 0, REG_DWORD, (const BYTE *)&list->dwCallForAttributes, sizeof(DWORD)); - RegCloseKey(shellfolder_key); + if (list->flags & SHELLFOLDER_WANTSFORDISPLAY) + res = RegSetValueExA(shellfolder_key, wfdisplay_valuename, 0, REG_SZ, (const BYTE *)"", 1); + if (list->flags & SHELLFOLDER_HIDEASDELETEPERUSER) + res = RegSetValueExA(shellfolder_key, hideasdeleteperuser_valuename, 0, REG_SZ, (const BYTE *)"", 1); + RegCloseKey(shellfolder_key); if (res != ERROR_SUCCESS) goto error_close_clsid_key; } @@ -572,6 +580,19 @@ static struct regsvr_coclass const coclass_list[] = { "shell32.dll", "Apartment" }, + { &CLSID_ControlPanel, + "Shell Control Panel Folder", + IDS_CONTROLPANEL, + NULL, + "shell32.dll", + "Apartment", + SHELLFOLDER_WANTSFORDISPLAY|SHELLFOLDER_ATTRIBUTES|SHELLFOLDER_HIDEASDELETEPERUSER, + SFGAO_FOLDER|SFGAO_HASSUBFOLDER, + 0, + NULL, + NULL, + IDI_SHELL_CONTROL_PANEL1 + }, { &CLSID_DragDropHelper, "Shell Drag and Drop Helper", 0, @@ -706,6 +727,8 @@ static const WCHAR wszDesktop[] = { 'D','e','s','k','t','o','p',0 }; static const WCHAR wszSlash[] = { '/', 0 }; static const WCHAR wszMyDocuments[] = { 'M','y',' ','D','o','c','u','m','e','n','t','s', 0 }; static const WCHAR wszRecycleBin[] = { 'T','r','a','s','h', 0 }; +static const WCHAR wszMyComputer[] = { 'M','y','C','o','m','p','u','t','e','r',0 }; +static const WCHAR wszControlPanel[] = { 'C','o','n','t','r','o','l',0 }; static struct regsvr_namespace const namespace_extensions_list[] = { #if 0 @@ -725,6 +748,11 @@ static struct regsvr_namespace const namespace_extensions_list[] = { wszDesktop, wszRecycleBin }, + { + &CLSID_ControlPanel, + wszMyComputer, + wszControlPanel + }, { NULL } }; diff --git a/reactos/dll/win32/shell32/shfldr_desktop.c b/reactos/dll/win32/shell32/shfldr_desktop.c index 45236af8805..fbe2baf430f 100644 --- a/reactos/dll/win32/shell32/shfldr_desktop.c +++ b/reactos/dll/win32/shell32/shfldr_desktop.c @@ -289,7 +289,7 @@ static BOOL CreateDesktopEnumList(IEnumIDList *list, DWORD dwFlags) } else { - ret = AddToEnumList(list, _ILCreateGuidFromStrW(iid)); + ret = AddToEnumList(list, pidl); } i++; } diff --git a/reactos/dll/win32/shell32/shresdef.h b/reactos/dll/win32/shell32/shresdef.h index b8fb3a67253..7f49c3d2132 100644 --- a/reactos/dll/win32/shell32/shresdef.h +++ b/reactos/dll/win32/shell32/shresdef.h @@ -106,6 +106,8 @@ #define IDS_SHELL_ABOUT_AUTHORS 144 #define IDS_SHELL_ABOUT_BACK 145 #define FCIDM_SHVIEW_NEW 146 +#define FCIDM_SHVIEW_VIEW 147 +#define IDS_CONTROLPANEL 148 /* Note: this string is referenced from the registry */ #define IDS_RECYCLEBIN_FOLDER_NAME 8964 @@ -172,7 +174,7 @@ #define IDI_SHELL_TRASH_FILE 142 #define IDI_SHELL_CONFIRM_DELETE 161 #define IDI_SHELL_MY_DOCUMENTS 235 - +#define IDI_SHELL_CONTROL_PANEL1 330 /* AVI resources, windows shell32 has 14 of them: 150-152 and 160-170 FIXME: Need to add them, but for now just let them use the same: searching.avi