Author: dchapyshev
Date: Sat Oct  3 11:34:19 2009
New Revision: 43260

URL: http://svn.reactos.org/svn/reactos?rev=43260&view=rev
Log:
- Implement delete of the program information from the registry
- Store settings information in HKEY_LOCAL_MACHINE instead HKEY_CURRENT_USER

Modified:
    trunk/reactos/base/applications/rapps/installed.c
    trunk/reactos/base/applications/rapps/lang/bg-BG.rc
    trunk/reactos/base/applications/rapps/lang/de-DE.rc
    trunk/reactos/base/applications/rapps/lang/en-US.rc
    trunk/reactos/base/applications/rapps/lang/es-ES.rc
    trunk/reactos/base/applications/rapps/lang/ja-JP.rc
    trunk/reactos/base/applications/rapps/lang/no-NO.rc
    trunk/reactos/base/applications/rapps/lang/pl-PL.rc
    trunk/reactos/base/applications/rapps/lang/ru-RU.rc
    trunk/reactos/base/applications/rapps/lang/sk-SK.rc
    trunk/reactos/base/applications/rapps/lang/uk-UA.rc
    trunk/reactos/base/applications/rapps/rapps.h
    trunk/reactos/base/applications/rapps/resource.h
    trunk/reactos/base/applications/rapps/winmain.c

Modified: trunk/reactos/base/applications/rapps/installed.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/installed.c?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/installed.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/installed.c [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -136,17 +136,17 @@
 ShowInstalledAppInfo(INT Index)
 {
     WCHAR szText[MAX_PATH], szInfo[MAX_PATH];
-    HKEY hKey = (HKEY) ListViewGetlParam(Index);
-
-    if (!hKey) return FALSE;
-
-    GetApplicationString(hKey, L"DisplayName", szText);
+    PINSTALLED_INFO Info = ListViewGetlParam(Index);
+
+    if (!Info || !Info->hSubKey) return FALSE;
+
+    GetApplicationString(Info->hSubKey, L"DisplayName", szText);
     NewRichEditText(szText, CFE_BOLD);
 
     InsertRichEditText(L"\n", 0);
 
 #define GET_INFO(a, b, c, d) \
-    if (GetApplicationString(hKey, a, szInfo)) \
+    if (GetApplicationString(Info->hSubKey, a, szInfo)) \
     { \
         LoadStringW(hInst, b, szText, sizeof(szText) / sizeof(WCHAR)); \
         InsertRichEditText(szText, c); \
@@ -175,32 +175,70 @@
 }
 
 
+VOID
+RemoveAppFromRegistry(INT Index)
+{
+    PINSTALLED_INFO Info;
+    WCHAR szFullName[MAX_PATH] = 
L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
+    WCHAR szMsgText[MAX_STR_LEN], szMsgTitle[MAX_STR_LEN];
+    INT ItemIndex = SendMessage(hListView, LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
+
+    if (!IS_INSTALLED_ENUM(SelectedEnumType))
+        return;
+
+    Info = ListViewGetlParam(Index);
+    if (!Info || !Info->hSubKey || (ItemIndex == -1)) return;
+
+    if (!LoadStringW(hInst, IDS_APP_REG_REMOVE, szMsgText, sizeof(szMsgText) / 
sizeof(WCHAR)) ||
+        !LoadStringW(hInst, IDS_INFORMATION, szMsgTitle, sizeof(szMsgTitle) / 
sizeof(WCHAR)))
+        return;
+
+    if (MessageBoxW(hMainWnd, szMsgText, szMsgTitle, MB_YESNO | 
MB_ICONQUESTION) == IDYES)
+    {
+        wcsncat(szFullName, Info->szKeyName, MAX_PATH - wcslen(szFullName));
+
+        if (RegDeleteKeyW(Info->hRootKey, szFullName) == ERROR_SUCCESS)
+        {
+            (VOID) ListView_DeleteItem(hListView, ItemIndex);
+            return;
+        }
+
+        if (!LoadStringW(hInst, IDS_UNABLE_TO_REMOVE, szMsgText, 
sizeof(szMsgText) / sizeof(WCHAR)))
+            return;
+
+        MessageBoxW(hMainWnd, szMsgText, NULL, MB_OK | MB_ICONERROR);
+    }
+}
+
+
 BOOL
 EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc)
 {
     DWORD dwSize = MAX_PATH, dwType, dwValue;
     BOOL bIsSystemComponent, bIsUpdate;
-    WCHAR pszName[MAX_PATH];
     WCHAR pszParentKeyName[MAX_PATH];
     WCHAR pszDisplayName[MAX_PATH];
-    HKEY hKey, hSubKey;
+    INSTALLED_INFO Info;
+    HKEY hKey;
     LONG ItemIndex = 0;
 
-    if (RegOpenKeyW(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
+    Info.hRootKey = IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE;
+
+    if (RegOpenKeyW(Info.hRootKey,
                     L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall",
                     &hKey) != ERROR_SUCCESS)
     {
         return FALSE;
     }
 
-    while (RegEnumKeyExW(hKey, ItemIndex, pszName, &dwSize, NULL, NULL, NULL, 
NULL) == ERROR_SUCCESS)
-    {
-        if (RegOpenKeyW(hKey, pszName, &hSubKey) == ERROR_SUCCESS)
+    while (RegEnumKeyExW(hKey, ItemIndex, Info.szKeyName, &dwSize, NULL, NULL, 
NULL, NULL) == ERROR_SUCCESS)
+    {
+        if (RegOpenKeyW(hKey, Info.szKeyName, &Info.hSubKey) == ERROR_SUCCESS)
         {
             dwType = REG_DWORD;
             dwSize = sizeof(DWORD);
 
-            if (RegQueryValueExW(hSubKey,
+            if (RegQueryValueExW(Info.hSubKey,
                                  L"SystemComponent",
                                  NULL,
                                  &dwType,
@@ -216,7 +254,7 @@
 
             dwType = REG_SZ;
             dwSize = MAX_PATH;
-            bIsUpdate = (RegQueryValueExW(hSubKey,
+            bIsUpdate = (RegQueryValueExW(Info.hSubKey,
                                           L"ParentKeyName",
                                           NULL,
                                           &dwType,
@@ -224,7 +262,7 @@
                                           &dwSize) == ERROR_SUCCESS);
 
             dwSize = MAX_PATH;
-            if (RegQueryValueExW(hSubKey,
+            if (RegQueryValueExW(Info.hSubKey,
                                  L"DisplayName",
                                  NULL,
                                  &dwType,
@@ -240,7 +278,7 @@
                         ((EnumType == ENUM_APPLICATIONS) && (!bIsUpdate)) || 
/* Applications only */
                         ((EnumType == ENUM_UPDATES) && (bIsUpdate))) /* 
Updates only */
                     {
-                        if (!lpEnumProc(ItemIndex, pszDisplayName, pszName, 
(LPARAM)hSubKey))
+                        if (!lpEnumProc(ItemIndex, pszDisplayName, Info))
                             break;
                     }
                 }

Modified: trunk/reactos/base/applications/rapps/lang/bg-BG.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/bg-BG.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/bg-BG.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/bg-BG.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -13,6 +13,8 @@
                MENUITEM "&Ñëàãàíå",  ID_INSTALL
                MENUITEM "&Ìàõàíå",ID_UNINSTALL
                MENUITEM "&Ïðîìÿíà",   ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "Î&ïðåñíÿâàíå",  ID_REFRESH
        END
@@ -39,6 +41,8 @@
                MENUITEM "&Ñëàãàíå",   ID_INSTALL
                MENUITEM "&Ìàõàíå", ID_UNINSTALL
                MENUITEM "&Ïðîìÿíà",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "Î&ïðåñíÿâàíå",   ID_REFRESH
        END
@@ -183,4 +187,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for 
downloading of programs:"
        IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
        IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS 
Applications Manager""!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/de-DE.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/de-DE.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/de-DE.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/de-DE.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -13,6 +13,8 @@
                MENUITEM "&Installieren",  ID_INSTALL
                MENUITEM "&Deinstallieren",ID_UNINSTALL
                MENUITEM "&Ändern",   ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Aktualisieren",  ID_REFRESH
        END
@@ -39,6 +41,8 @@
                MENUITEM "&Installieren",   ID_INSTALL
                MENUITEM "&Deinstallieren", ID_UNINSTALL
                MENUITEM "&Ändern",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Aktualisieren",   ID_REFRESH
        END
@@ -183,4 +187,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for 
downloading of programs:"
        IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
        IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS 
Applications Manager""!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/en-US.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/en-US.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/en-US.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/en-US.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -13,6 +13,8 @@
                MENUITEM "&Install",  ID_INSTALL
                MENUITEM "&Uninstall",ID_UNINSTALL
                MENUITEM "&Modify",   ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Refresh",  ID_REFRESH
        END
@@ -39,6 +41,8 @@
                MENUITEM "&Install",   ID_INSTALL
                MENUITEM "&Uninstall", ID_UNINSTALL
                MENUITEM "&Modify",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Refresh",   ID_REFRESH
        END
@@ -183,4 +187,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for 
downloading of programs:"
        IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
        IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS 
Applications Manager""!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/es-ES.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/es-ES.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/es-ES.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/es-ES.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -13,6 +13,8 @@
                MENUITEM "&Instalar",  ID_INSTALL
                MENUITEM "&Desinstalar",ID_UNINSTALL
                MENUITEM "&Modificar",   ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Refrescar",  ID_REFRESH
        END
@@ -39,6 +41,8 @@
                MENUITEM "&Instalar",   ID_INSTALL
                MENUITEM "&Desinstalar", ID_UNINSTALL
                MENUITEM "&Modificar",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Refrescar",   ID_REFRESH
        END
@@ -183,4 +187,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for 
downloading of programs:"
        IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
        IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS 
Applications Manager""!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/ja-JP.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/ja-JP.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/ja-JP.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/ja-JP.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -13,6 +13,8 @@
                MENUITEM "ƒCƒ“ƒXƒg[ƒ‹(&I)",    ID_INSTALL
                MENUITEM "ƒAƒ“ƒCƒ“ƒXƒg[ƒ‹(&U)",ID_UNINSTALL
                MENUITEM "•ύX(&M)",            ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "XV(&R)",            ID_REFRESH
        END
@@ -39,6 +41,8 @@
                MENUITEM "ƒCƒ“ƒXƒg[ƒ‹(&I)",     ID_INSTALL
                MENUITEM "ƒAƒ“ƒCƒ“ƒXƒg[ƒ‹(&U)", ID_UNINSTALL
                MENUITEM "•ύX(&M)",             ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "XV(&R)",             ID_REFRESH
        END
@@ -183,4 +187,7 @@
        IDS_CHOOSE_FOLDER_TEXT  
"ƒvƒƒOƒ‰ƒ€‚̃_ƒEƒ“ƒ[ƒh‚ÉŽg—p‚·‚éƒtƒHƒ‹ƒ_‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢:"
        IDS_CHOOSE_FOLDER_ERROR "Žw’肳‚ꂽƒtƒHƒ‹ƒ_‚Í‘¶Ý‚µ‚Ü‚¹‚ñ!"
        IDS_USER_NOT_ADMIN      """ReactOS ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒ}ƒl[ƒWƒƒ["" 
‚ð‹N“®‚·‚é‚ɂ͊ǗŽÒŒ ŒÀ‚Å‚ ‚é•K—v‚ª‚ ‚è‚Ü‚·!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/no-NO.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/no-NO.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/no-NO.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/no-NO.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -13,6 +13,8 @@
                MENUITEM "&Installere",  ID_INSTALL
                MENUITEM "&Avinstallere",ID_UNINSTALL
                MENUITEM "&Endre",   ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Oppdatere",  ID_REFRESH
        END
@@ -39,6 +41,8 @@
                MENUITEM "&Installere",   ID_INSTALL
                MENUITEM "&Avinstallere", ID_UNINSTALL
                MENUITEM "&Endre",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Oppdater",   ID_REFRESH
        END
@@ -183,4 +187,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for 
downloading of programs:"
        IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
        IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS 
Applications Manager""!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/pl-PL.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/pl-PL.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/pl-PL.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/pl-PL.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -15,6 +15,8 @@
                MENUITEM "&Instaluj",  ID_INSTALL
                MENUITEM "&Odinstaluj",ID_UNINSTALL
                MENUITEM "&Modyfikuj",   ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "O&dœwie¿",  ID_REFRESH
        END
@@ -41,6 +43,8 @@
                MENUITEM "&Instaluj",   ID_INSTALL
                MENUITEM "&odinstaluj", ID_UNINSTALL
                MENUITEM "&Modyfikuj",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Odœwie¿",   ID_REFRESH
        END
@@ -185,4 +189,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for 
downloading of programs:"
        IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
        IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS 
Applications Manager""!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/ru-RU.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/ru-RU.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/ru-RU.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/ru-RU.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -10,9 +10,11 @@
        END
        POPUP "&Ïðîãðàììû"
        BEGIN
-               MENUITEM "&Óñòàíîâèòü",  ID_INSTALL
+               MENUITEM "Ó&ñòàíîâèòü",  ID_INSTALL
                MENUITEM "&Óäàëèòü",     ID_UNINSTALL
                MENUITEM "&Èçìåíèòü",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "Ó&äàëèòü èç ðååñòðà", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Îáíîâèòü",    ID_REFRESH
        END
@@ -39,6 +41,8 @@
                MENUITEM "&Óñòàíîâèòü",   ID_INSTALL
                MENUITEM "&Óäàëèòü",      ID_UNINSTALL
                MENUITEM "&Èçìåíèòü",     ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "Ó&äàëèòü èç ðååñòðà", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Îáíîâèòü",     ID_REFRESH
        END
@@ -183,4 +187,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Âûáåðèòå ïàïêó, êîòîðàÿ áóäåò èñïîëüçîâàòüñÿ 
äëÿ çàãðóçêè ïðîãðàìì:"
        IDS_CHOOSE_FOLDER_ERROR "Âû óêàçàëè íåñóùåñòâóþùóþ ïàïêó!"
        IDS_USER_NOT_ADMIN "Âû äîëæíû áûòü àäìèíèñòðàòîðîì äëÿ çàïóñêà 
""Ìåíåäæåðà ïðèëîæåíèé ReactOS""!"
+       IDS_APP_REG_REMOVE "Âû äåéñòâèòåëüíî õîòèòå óäàëèòü äàííûå îá 
óñòàíîâëåííîé ïðîãðàììå èç ðååñòðà?"
+       IDS_INFORMATION "Èíôîðìàöèÿ"
+       IDS_UNABLE_TO_REMOVE "Íå óäàëîñü óäàëèòü äàííûå î ïðîãðàììå èç ðååñòðà!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/sk-SK.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/sk-SK.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/sk-SK.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/sk-SK.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -18,6 +18,8 @@
                MENUITEM "&Inštalova",   ID_INSTALL
                MENUITEM "O&dinštalova", ID_UNINSTALL
                MENUITEM "&Zmeni",       ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Obnovi",      ID_REFRESH
        END
@@ -44,6 +46,8 @@
                MENUITEM "&Inštalova",   ID_INSTALL
                MENUITEM "O&dinštalova", ID_UNINSTALL
                MENUITEM "&Zmeni",       ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Obnovi",      ID_REFRESH
        END
@@ -188,4 +192,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Vyberte prieèinok, ktorý sa použije pre 
sahovanie programov:"
        IDS_CHOOSE_FOLDER_ERROR "Zvolili ste si neexistujúci prieèinok!"
        IDS_USER_NOT_ADMIN "Mali by ste by administrátor pre spustenie 
""Manažéra aplikácií systému ReactOS""!"
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
 END

Modified: trunk/reactos/base/applications/rapps/lang/uk-UA.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lang/uk-UA.rc?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/lang/uk-UA.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/lang/uk-UA.rc [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -22,6 +22,8 @@
                MENUITEM "&Âèäàëèòè",ID_UNINSTALL
                MENUITEM "&Çì³íèòè",   ID_MODIFY
                MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
+               MENUITEM SEPARATOR
                MENUITEM "&Îíîâèòè",  ID_REFRESH
        END
        POPUP "Äîâ³äêà"
@@ -47,6 +49,8 @@
                MENUITEM "&Âñòàíîâèòè",   ID_INSTALL
                MENUITEM "&Âèäàëèòè", ID_UNINSTALL
                MENUITEM "&Çì³íèòè",    ID_MODIFY
+               MENUITEM SEPARATOR
+               MENUITEM "&Remove from Registry", ID_REGREMOVE
                MENUITEM SEPARATOR
                MENUITEM "&Îíîâèòè",   ID_REFRESH
        END
@@ -191,4 +195,7 @@
        IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for 
downloading of programs:"
        IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
        IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS 
Applications Manager""!"
-END
+       IDS_APP_REG_REMOVE "Are you sure you want to delete the data on the 
installed program from the registry?"
+       IDS_INFORMATION "Information"
+       IDS_UNABLE_TO_REMOVE "Unable to remove data on the program from the 
registry!"
+END

Modified: trunk/reactos/base/applications/rapps/rapps.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/rapps.h?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/rapps.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/rapps.h [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -71,6 +71,14 @@
 
 typedef struct
 {
+    HKEY hRootKey;
+    HKEY hSubKey;
+    WCHAR szKeyName[MAX_PATH];
+
+} INSTALLED_INFO, *PINSTALLED_INFO;
+
+typedef struct
+{
     BOOL bSaveWndPos;
     BOOL bUpdateAtStart;
     BOOL bLogEnabled;
@@ -95,12 +103,13 @@
 BOOL InstallApplication(INT Index);
 
 /* installed.c */
-typedef BOOL (CALLBACK *APPENUMPROC)(INT ItemIndex, LPWSTR lpName, LPWSTR 
lpKeyName, LPARAM lParam);
+typedef BOOL (CALLBACK *APPENUMPROC)(INT ItemIndex, LPWSTR lpName, 
INSTALLED_INFO Info);
 BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC 
lpEnumProc);
 BOOL GetApplicationString(HKEY hKey, LPWSTR lpKeyName, LPWSTR lpString);
 BOOL ShowInstalledAppInfo(INT Index);
 BOOL UninstallApplication(INT Index, BOOL bModify);
 BOOL IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey);
+VOID RemoveAppFromRegistry(INT Index);
 
 /* winmain.c */
 extern HWND hMainWnd;

Modified: trunk/reactos/base/applications/rapps/resource.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/resource.h?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/resource.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/resource.h [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -69,6 +69,7 @@
 #define ID_COPY_LINK             557
 #define ID_SETTINGS              558
 #define ID_REFRESH               559
+#define ID_REGREMOVE             560
 
 /* Strings */
 #define IDS_APPTITLE             100
@@ -87,6 +88,9 @@
 #define IDS_CHOOSE_FOLDER_TEXT   113
 #define IDS_CHOOSE_FOLDER_ERROR  114
 #define IDS_USER_NOT_ADMIN       115
+#define IDS_APP_REG_REMOVE       116
+#define IDS_INFORMATION          117
+#define IDS_UNABLE_TO_REMOVE     118
 
 /* Tooltips */
 #define IDS_TOOLTIP_INSTALL      200

Modified: trunk/reactos/base/applications/rapps/winmain.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/winmain.c?rev=43260&r1=43259&r2=43260&view=diff
==============================================================================
--- trunk/reactos/base/applications/rapps/winmain.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/rapps/winmain.c [iso-8859-1] Sat Oct  3 
11:34:19 2009
@@ -15,6 +15,7 @@
 INT SelectedEnumType = ENUM_ALL_COMPONENTS;
 SETTINGS_INFO SettingsInfo;
 
+
 VOID
 FillDafaultSettings(PSETTINGS_INFO pSettingsInfo)
 {
@@ -37,7 +38,7 @@
     HKEY hKey;
     DWORD dwSize;
 
-    if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\rapps", 0, 
KEY_READ, &hKey) == ERROR_SUCCESS)
+    if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\ReactOS\\rapps", 0, 
KEY_READ, &hKey) == ERROR_SUCCESS)
     {
         dwSize = sizeof(SETTINGS_INFO);
         if (RegQueryValueExW(hKey, L"Settings", NULL, NULL, 
(LPBYTE)&SettingsInfo, &dwSize) == ERROR_SUCCESS)
@@ -70,7 +71,7 @@
         SettingsInfo.Maximized = (IsZoomed(hwnd) || (wp.flags & 
WPF_RESTORETOMAXIMIZED));
     }
 
-    if (RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\rapps", 0, 
NULL,
+    if (RegCreateKeyExW(HKEY_LOCAL_MACHINE, L"Software\\ReactOS\\rapps", 0, 
NULL,
         REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == 
ERROR_SUCCESS)
     {
         RegSetValueEx(hKey, L"Settings", 0, REG_BINARY, (LPBYTE)&SettingsInfo, 
sizeof(SETTINGS_INFO));
@@ -82,31 +83,40 @@
 FreeInstalledAppList(VOID)
 {
     INT Count = ListView_GetItemCount(hListView) - 1;
-    HKEY hKey;
+    PINSTALLED_INFO Info;
 
     while (Count >= 0)
     {
-        hKey = ListViewGetlParam(Count);
-        if (hKey)
-            RegCloseKey(hKey);
+        Info = ListViewGetlParam(Count);
+        if (Info)
+        {
+            RegCloseKey(Info->hSubKey);
+            HeapFree(GetProcessHeap(), 0, Info);
+        }
         Count--;
     }
 }
 
 BOOL
 CALLBACK
-EnumInstalledAppProc(INT ItemIndex, LPWSTR lpName, LPWSTR lpKeyName, LPARAM 
lParam)
-{
+EnumInstalledAppProc(INT ItemIndex, LPWSTR lpName, INSTALLED_INFO Info)
+{
+    PINSTALLED_INFO ItemInfo;
     WCHAR szText[MAX_PATH];
     INT Index;
 
-    Index = ListViewAddItem(ItemIndex, 0, lpName, lParam);
+    ItemInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(INSTALLED_INFO));
+    if (!ItemInfo) return FALSE;
+
+    *ItemInfo = Info;
+
+    Index = ListViewAddItem(ItemIndex, 0, lpName, (LPARAM)ItemInfo);
 
     /* Get version info */
-    GetApplicationString((HKEY)lParam, L"DisplayVersion", szText);
+    GetApplicationString((HKEY)ItemInfo->hSubKey, L"DisplayVersion", szText);
     ListView_SetItemText(hListView, Index, 1, szText);
     /* Get comments */
-    GetApplicationString((HKEY)lParam, L"Comments", szText);
+    GetApplicationString((HKEY)ItemInfo->hSubKey, L"Comments", szText);
     ListView_SetItemText(hListView, Index, 2, szText);
 
     return TRUE;
@@ -399,6 +409,10 @@
                 UpdateApplicationsList(-1);
             break;
 
+        case ID_REGREMOVE:
+            RemoveAppFromRegistry(-1);
+            break;
+
         case ID_REFRESH:
             UpdateApplicationsList(-1);
             break;


Reply via email to