diff --git a/reactos/dll/cpl/intl/intl.c b/reactos/dll/cpl/intl/intl.c index 077a7eefb68..d3903751b83 100644 --- a/reactos/dll/cpl/intl/intl.c +++ b/reactos/dll/cpl/intl/intl.c @@ -168,6 +168,7 @@ Applet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam) return FALSE; pGlobalData->SystemLCID = GetSystemDefaultLCID(); + pGlobalData->bIsUserAdmin = IsUserAdmin(); LoadString(hApplet, IDS_CPLNAME, Caption, sizeof(Caption) / sizeof(TCHAR)); @@ -178,13 +179,20 @@ Applet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam) psh.hInstance = hApplet; psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON)); psh.pszCaption = Caption; - psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE); + psh.nPages = 0; //sizeof(psp) / sizeof(PROPSHEETPAGE); psh.nStartPage = 0; psh.ppsp = psp; InitPropSheetPage(&psp[0], IDD_GENERALPAGE, GeneralPageProc, (LPARAM)pGlobalData); + psh.nPages++; InitPropSheetPage(&psp[1], IDD_LANGUAGESPAGE, LanguagesPageProc, (LPARAM)pGlobalData); - InitPropSheetPage(&psp[2], IDD_ADVANCEDPAGE, AdvancedPageProc, (LPARAM)pGlobalData); + psh.nPages++; + + if (pGlobalData->bIsUserAdmin) + { + InitPropSheetPage(&psp[2], IDD_ADVANCEDPAGE, AdvancedPageProc, (LPARAM)pGlobalData); + psh.nPages++; + } ret = (LONG)(PropertySheet(&psh) != -1); diff --git a/reactos/dll/cpl/intl/intl.h b/reactos/dll/cpl/intl/intl.h index b22bf0f8c00..b252c4a28ce 100644 --- a/reactos/dll/cpl/intl/intl.h +++ b/reactos/dll/cpl/intl/intl.h @@ -116,6 +116,8 @@ typedef struct _GLOBALDATA GEOID geoid; BOOL fGeoIdChanged; + /* Misc */ + BOOL bIsUserAdmin; } GLOBALDATA, *PGLOBALDATA; typedef struct diff --git a/reactos/dll/cpl/intl/languages.c b/reactos/dll/cpl/intl/languages.c index c01e53fbe77..6056a121511 100644 --- a/reactos/dll/cpl/intl/languages.c +++ b/reactos/dll/cpl/intl/languages.c @@ -10,10 +10,21 @@ LanguagesPageProc(HWND hwndDlg, LPARAM lParam) { SHELLEXECUTEINFOW shInputDll; + PGLOBALDATA pGlobalData; + + pGlobalData = (PGLOBALDATA)GetWindowLongPtr(hwndDlg, DWLP_USER); switch (uMsg) { case WM_INITDIALOG: + pGlobalData = (PGLOBALDATA)((LPPROPSHEETPAGE)lParam)->lParam; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData); + + if (!pGlobalData->bIsUserAdmin) + { + EnableWindow(GetDlgItem(hwndDlg, IDC_INST_FILES_FOR_RTOL_LANG), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_INST_FILES_FOR_ASIAN), FALSE); + } break; case WM_COMMAND: