| /* | |
| * shpolicy.c - Data for shell/system policies. | |
| * | |
| * Copyright 1999 Ian Schmidt <ischmidt@cfl.rr.com> | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| * | |
| * NOTES: | |
| * | |
| * Some of these policies can be tweaked via the System Policy | |
| * Editor which came with the Win95 Migration Guide, although | |
| * there doesn't appear to be an updated Win98 version that | |
| * would handle the many new policies introduced since then. | |
| * You could easily write one with the information in | |
| * this file... | |
| * | |
| * Up to date as of SHELL32 v5.00 (W2K) | |
| */ | |
| #include <stdarg.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| #include "windef.h" | |
| #include "winbase.h" | |
| #include "winerror.h" | |
| #include "winreg.h" | |
| #include "shell32_main.h" | |
| #include "shlobj.h" | |
| #include "wine/debug.h" | |
| WINE_DEFAULT_DEBUG_CHANNEL(shell); | |
| #define SHELL_NO_POLICY 0xffffffff | |
| typedef struct tagPOLICYDAT | |
| { | |
| DWORD policy; /* policy value passed to SHRestricted */ | |
| LPCSTR appstr; /* application str such as "Explorer" */ | |
| LPCSTR keystr; /* name of the actual registry key / policy */ | |
| DWORD cache; /* cached value or 0xffffffff for invalid */ | |
| } POLICYDATA, *LPPOLICYDATA; | |
| /* registry strings */ | |
| static const CHAR strRegistryPolicyA[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies"; | |
| static const WCHAR strRegistryPolicyW[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o', | |
| 's','o','f','t','\\','W','i','n','d','o','w','s','\\', | |
| 'C','u','r','r','e','n','t','V','e','r','s','i','o','n', | |
| '\\','P','o','l','i','c','i','e','s',0}; | |
| static const CHAR strPolicyA[] = "Policy"; | |
| static const WCHAR strPolicyW[] = {'P','o','l','i','c','y',0}; | |
| /* application strings */ | |
| static const char strExplorer[] = {"Explorer"}; | |
| static const char strActiveDesk[] = {"ActiveDesktop"}; | |
| static const char strWinOldApp[] = {"WinOldApp"}; | |
| static const char strAddRemoveProgs[] = {"AddRemoveProgs"}; | |
| /* key strings */ | |
| static const char strNoFileURL[] = {"NoFileUrl"}; | |
| static const char strNoFolderOptions[] = {"NoFolderOptions"}; | |
| static const char strNoChangeStartMenu[] = {"NoChangeStartMenu"}; | |
| static const char strNoWindowsUpdate[] = {"NoWindowsUpdate"}; | |
| static const char strNoSetActiveDesktop[] = {"NoSetActiveDesktop"}; | |
| static const char strNoForgetSoftwareUpdate[] = {"NoForgetSoftwareUpdate"}; | |
| static const char strNoMSAppLogo[] = {"NoMSAppLogo5ChannelNotify"}; | |
| static const char strForceCopyACLW[] = {"ForceCopyACLWithFile"}; | |
| static const char strNoResolveTrk[] = {"NoResolveTrack"}; | |
| static const char strNoResolveSearch[] = {"NoResolveSearch"}; | |
| static const char strNoEditComponent[] = {"NoEditingComponents"}; | |
| static const char strNoMovingBand[] = {"NoMovingBands"}; | |
| static const char strNoCloseDragDrop[] = {"NoCloseDragDropBands"}; | |
| static const char strNoCloseComponent[] = {"NoClosingComponents"}; | |
| static const char strNoDelComponent[] = {"NoDeletingComponents"}; | |
| static const char strNoAddComponent[] = {"NoAddingComponents"}; | |
| static const char strNoComponent[] = {"NoComponents"}; | |
| static const char strNoChangeWallpaper[] = {"NoChangingWallpaper"}; | |
| static const char strNoHTMLWallpaper[] = {"NoHTMLWallpaper"}; | |
| static const char strNoCustomWebView[] = {"NoCustomizeWebView"}; | |
| static const char strClassicShell[] = {"ClassicShell"}; | |
| static const char strClearRecentDocs[] = {"ClearRecentDocsOnExit"}; | |
| static const char strNoFavoritesMenu[] = {"NoFavoritesMenu"}; | |
| static const char strNoActiveDesktopChanges[] = {"NoActiveDesktopChanges"}; | |
| static const char strNoActiveDesktop[] = {"NoActiveDesktop"}; | |
| static const char strNoRecentDocMenu[] = {"NoRecentDocsMenu"}; | |
| static const char strNoRecentDocHistory[] = {"NoRecentDocsHistory"}; | |
| static const char strNoInetIcon[] = {"NoInternetIcon"}; | |
| static const char strNoSettingsWizard[] = {"NoSettingsWizards"}; | |
| static const char strNoLogoff[] = {"NoLogoff"}; | |
| static const char strNoNetConDis[] = {"NoNetConnectDisconnect"}; | |
| static const char strNoViewContextMenu[] = {"NoViewContextMenu"}; | |
| static const char strNoTrayContextMenu[] = {"NoTrayContextMenu"}; | |
| static const char strNoWebMenu[] = {"NoWebMenu"}; | |
| static const char strLnkResolveIgnoreLnkInfo[] = {"LinkResolveIgnoreLinkInfo"}; | |
| static const char strNoCommonGroups[] = {"NoCommonGroups"}; | |
| static const char strEnforceShlExtSecurity[] = {"EnforceShellExtensionSecurity"}; | |
| static const char strNoRealMode[] = {"NoRealMode"}; | |
| static const char strMyDocsOnNet[] = {"MyDocsOnNet"}; | |
| static const char strNoStartMenuSubfolder[] = {"NoStartMenuSubFolders"}; | |
| static const char strNoAddPrinters[] = {"NoAddPrinter"}; | |
| static const char strNoDeletePrinters[] = {"NoDeletePrinter"}; | |
| static const char strNoPrintTab[] = {"NoPrinterTabs"}; | |
| static const char strRestrictRun[] = {"RestrictRun"}; | |
| static const char strNoStartBanner[] = {"NoStartBanner"}; | |
| static const char strNoNetworkNeighborhood[] = {"NoNetHood"}; | |
| static const char strNoDriveTypeAtRun[] = {"NoDriveTypeAutoRun"}; | |
| static const char strNoDrivesAutoRun[] = {"NoDriveAutoRun"}; | |
| static const char strSeparateProcess[] = {"SeparateProcess"}; | |
| static const char strNoDrives[] = {"NoDrives"}; | |
| static const char strNoFind[] = {"NoFind"}; | |
| static const char strNoDesktop[] = {"NoDesktop"}; | |
| static const char strNoSetTaskBar[] = {"NoSetTaskbar"}; | |
| static const char strNoSetFld[] = {"NoSetFolders"}; | |
| static const char strNoFileMenu[] = {"NoFileMenu"}; | |
| static const char strNoSaveSetting[] = {"NoSaveSettings"}; | |
| static const char strNoClose[] = {"NoClose"}; | |
| static const char strNoRun[] = {"NoRun"}; | |
| /* policy data array */ | |
| POLICYDATA sh32_policy_table[] = | |
| { | |
| { | |
| REST_NORUN, | |
| strExplorer, | |
| strNoRun, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCLOSE, | |
| strExplorer, | |
| strNoClose, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSAVESET, | |
| strExplorer, | |
| strNoSaveSetting, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOFILEMENU, | |
| strExplorer, | |
| strNoFileMenu, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSETFOLDERS, | |
| strExplorer, | |
| strNoSetFld, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSETTASKBAR, | |
| strExplorer, | |
| strNoSetTaskBar, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NODESKTOP, | |
| strExplorer, | |
| strNoDesktop, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOFIND, | |
| strExplorer, | |
| strNoFind, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NODRIVES, | |
| strExplorer, | |
| strNoDrives, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NODRIVEAUTORUN, | |
| strExplorer, | |
| strNoDrivesAutoRun, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NODRIVETYPEAUTORUN, | |
| strExplorer, | |
| strNoDriveTypeAtRun, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NONETHOOD, | |
| strExplorer, | |
| strNoNetworkNeighborhood, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_STARTBANNER, | |
| strExplorer, | |
| strNoStartBanner, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_RESTRICTRUN, | |
| strExplorer, | |
| strRestrictRun, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOPRINTERTABS, | |
| strExplorer, | |
| strNoPrintTab, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOPRINTERDELETE, | |
| strExplorer, | |
| strNoDeletePrinters, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOPRINTERADD, | |
| strExplorer, | |
| strNoAddPrinters, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSTARTMENUSUBFOLDERS, | |
| strExplorer, | |
| strNoStartMenuSubfolder, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_MYDOCSONNET, | |
| strExplorer, | |
| strMyDocsOnNet, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOEXITTODOS, | |
| strWinOldApp, | |
| strNoRealMode, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ENFORCESHELLEXTSECURITY, | |
| strExplorer, | |
| strEnforceShlExtSecurity, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_LINKRESOLVEIGNORELINKINFO, | |
| strExplorer, | |
| strLnkResolveIgnoreLnkInfo, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCOMMONGROUPS, | |
| strExplorer, | |
| strNoCommonGroups, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_SEPARATEDESKTOPPROCESS, | |
| strExplorer, | |
| strSeparateProcess, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOWEB, | |
| strExplorer, | |
| strNoWebMenu, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOTRAYCONTEXTMENU, | |
| strExplorer, | |
| strNoTrayContextMenu, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOVIEWCONTEXTMENU, | |
| strExplorer, | |
| strNoViewContextMenu, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NONETCONNECTDISCONNECT, | |
| strExplorer, | |
| strNoNetConDis, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_STARTMENULOGOFF, | |
| strExplorer, | |
| strNoLogoff, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSETTINGSASSIST, | |
| strExplorer, | |
| strNoSettingsWizard, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOINTERNETICON, | |
| strExplorer, | |
| strNoInetIcon, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NORECENTDOCSHISTORY, | |
| strExplorer, | |
| strNoRecentDocHistory, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NORECENTDOCSMENU, | |
| strExplorer, | |
| strNoRecentDocMenu, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOACTIVEDESKTOP, | |
| strExplorer, | |
| strNoActiveDesktop, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOACTIVEDESKTOPCHANGES, | |
| strExplorer, | |
| strNoActiveDesktopChanges, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOFAVORITESMENU, | |
| strExplorer, | |
| strNoFavoritesMenu, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_CLEARRECENTDOCSONEXIT, | |
| strExplorer, | |
| strClearRecentDocs, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_CLASSICSHELL, | |
| strExplorer, | |
| strClassicShell, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCUSTOMIZEWEBVIEW, | |
| strExplorer, | |
| strNoCustomWebView, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOHTMLWALLPAPER, | |
| strActiveDesk, | |
| strNoHTMLWallpaper, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCHANGINGWALLPAPER, | |
| strActiveDesk, | |
| strNoChangeWallpaper, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NODESKCOMP, | |
| strActiveDesk, | |
| strNoComponent, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOADDDESKCOMP, | |
| strActiveDesk, | |
| strNoAddComponent, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NODELDESKCOMP, | |
| strActiveDesk, | |
| strNoDelComponent, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCLOSEDESKCOMP, | |
| strActiveDesk, | |
| strNoCloseComponent, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCLOSE_DRAGDROPBAND, | |
| strActiveDesk, | |
| strNoCloseDragDrop, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOMOVINGBAND, | |
| strActiveDesk, | |
| strNoMovingBand, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOEDITDESKCOMP, | |
| strActiveDesk, | |
| strNoEditComponent, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NORESOLVESEARCH, | |
| strExplorer, | |
| strNoResolveSearch, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NORESOLVETRACK, | |
| strExplorer, | |
| strNoResolveTrk, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_FORCECOPYACLWITHFILE, | |
| strExplorer, | |
| strForceCopyACLW, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOLOGO3CHANNELNOTIFY, | |
| strExplorer, | |
| strNoMSAppLogo, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOFORGETSOFTWAREUPDATE, | |
| strExplorer, | |
| strNoForgetSoftwareUpdate, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSETACTIVEDESKTOP, | |
| strExplorer, | |
| strNoSetActiveDesktop, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOUPDATEWINDOWS, | |
| strExplorer, | |
| strNoWindowsUpdate, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCHANGESTARMENU, | |
| strExplorer, | |
| strNoChangeStartMenu, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOFOLDEROPTIONS, | |
| strExplorer, | |
| strNoFolderOptions, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_HASFINDCOMPUTERS, | |
| strExplorer, | |
| "FindComputers", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_INTELLIMENUS, | |
| strExplorer, | |
| "IntelliMenus", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_RUNDLGMEMCHECKBOX, | |
| strExplorer, | |
| "MemCheckBoxInRunDlg", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ARP_ShowPostSetup, | |
| strAddRemoveProgs, | |
| "ShowPostSetup", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCSC, | |
| strExplorer, | |
| "NoSyncAll", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCONTROLPANEL, | |
| strExplorer, | |
| "NoControlPanel", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ENUMWORKGROUP, | |
| strExplorer, | |
| "EnumWorkgroup", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ARP_NOARP, | |
| strAddRemoveProgs, | |
| "NoAddRemovePrograms", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ARP_NOREMOVEPAGE, | |
| strAddRemoveProgs, | |
| "NoRemovePage", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ARP_NOADDPAGE, | |
| strAddRemoveProgs, | |
| "NoAddPage", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ARP_NOWINSETUPPAGE, | |
| strAddRemoveProgs, | |
| "NoWindowsSetupPage", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_GREYMSIADS, | |
| strExplorer, | |
| "", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCHANGEMAPPEDDRIVELABEL, | |
| strExplorer, | |
| "NoChangeMappedDriveLabel", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCHANGEMAPPEDDRIVECOMMENT, | |
| strExplorer, | |
| "NoChangeMappedDriveComment", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_MaxRecentDocs, | |
| strExplorer, | |
| "MaxRecentDocs", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NONETWORKCONNECTIONS, | |
| strExplorer, | |
| "NoNetworkConnections", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_FORCESTARTMENULOGOFF, | |
| strExplorer, | |
| "ForceStartMenuLogoff", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOWEBVIEW, | |
| strExplorer, | |
| "NoWebView", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCUSTOMIZETHISFOLDER, | |
| strExplorer, | |
| "NoCustomizeThisFolder", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOENCRYPTION, | |
| strExplorer, | |
| "NoEncryption", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_ALLOWFRENCHENCRYPTION, | |
| strExplorer, | |
| "AllowFrenchEncryption", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_DONTSHOWSUPERHIDDEN, | |
| strExplorer, | |
| "DontShowSuperHidden", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSHELLSEARCHBUTTON, | |
| strExplorer, | |
| "NoShellSearchButton", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOHARDWARETAB, | |
| strExplorer, | |
| "NoHardwareTab", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NORUNASINSTALLPROMPT, | |
| strExplorer, | |
| "NoRunasInstallPrompt", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_PROMPTRUNASINSTALLNETPATH, | |
| strExplorer, | |
| "PromptRunasInstallNetPath", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOMANAGEMYCOMPUTERVERB, | |
| strExplorer, | |
| "NoManageMyComputerVerb", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NORECENTDOCSNETHOOD, | |
| strExplorer, | |
| "NoRecentDocsNetHood", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_DISALLOWRUN, | |
| strExplorer, | |
| "DisallowRun", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOWELCOMESCREEN, | |
| strExplorer, | |
| "NoWelcomeScreen", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_RESTRICTCPL, | |
| strExplorer, | |
| "RestrictCpl", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_DISALLOWCPL, | |
| strExplorer, | |
| "DisallowCpl", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSMBALLOONTIP, | |
| strExplorer, | |
| "NoSMBalloonTip", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSMHELP, | |
| strExplorer, | |
| "NoSMHelp", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOWINKEYS, | |
| strExplorer, | |
| "NoWinKeys", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOENCRYPTONMOVE, | |
| strExplorer, | |
| "NoEncryptOnMove", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOLOCALMACHINERUN, | |
| strExplorer, | |
| "DisableLocalMachineRun", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCURRENTUSERRUN, | |
| strExplorer, | |
| "DisableCurrentUserRun", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOLOCALMACHINERUNONCE, | |
| strExplorer, | |
| "DisableLocalMachineRunOnce", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCURRENTUSERRUNONCE, | |
| strExplorer, | |
| "DisableCurrentUserRunOnce", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_FORCEACTIVEDESKTOPON, | |
| strExplorer, | |
| "ForceActiveDesktopOn", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOCOMPUTERSNEARME, | |
| strExplorer, | |
| "NoComputersNearMe", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOVIEWONDRIVE, | |
| strExplorer, | |
| "NoViewOnDrive", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NONETCRAWL, | |
| strExplorer, | |
| "NoNetCrawl", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSHAREDDOCUMENTS, | |
| strExplorer, | |
| "NoSharedDocs", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSMMYDOCS, | |
| strExplorer, | |
| "NoSMMyDocs", | |
| SHELL_NO_POLICY | |
| }, | |
| /* 0x4000050 - 0x4000060 */ | |
| { | |
| REST_NONLEGACYSHELLMODE, | |
| strExplorer, | |
| "NoneLegacyShellMode", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_STARTRUNNOHOMEPATH, | |
| strExplorer, | |
| "StartRunNoHOMEPATH", | |
| SHELL_NO_POLICY | |
| }, | |
| /* 0x4000061 - 0x4000086 */ | |
| { | |
| REST_NODISCONNECT, | |
| strExplorer, | |
| "NoDisconnect", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOSECURITY, | |
| strExplorer, | |
| "NoNTSecurity", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| REST_NOFILEASSOCIATE, | |
| strExplorer, | |
| "NoFileAssociate", | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| 0x50000024, | |
| strExplorer, | |
| strNoFileURL, | |
| SHELL_NO_POLICY | |
| }, | |
| { | |
| 0, | |
| 0, | |
| 0, | |
| SHELL_NO_POLICY | |
| } | |
| }; | |
| /************************************************************************* | |
| * SHRestricted [SHELL32.100] | |
| * | |
| * Get the value associated with a policy Id. | |
| * | |
| * PARAMS | |
| * pol [I] Policy Id | |
| * | |
| * RETURNS | |
| * The queried value for the policy. | |
| * | |
| * NOTES | |
| * Exported by ordinal. | |
| * This function caches the retrieved values to prevent unnecessary registry access, | |
| * if SHInitRestricted() was previously called. | |
| * | |
| * REFERENCES | |
| * a: MS System Policy Editor. | |
| * b: 98Lite 2.0 (which uses many of these policy keys) http://www.98lite.net/ | |
| * c: 'The Windows 95 Registry', by John Woram, 1996 MIS: Press | |
| */ | |
| DWORD WINAPI SHRestricted (RESTRICTIONS policy) | |
| { | |
| char regstr[256]; | |
| HKEY xhkey; | |
| DWORD retval, datsize = 4; | |
| LPPOLICYDATA p; | |
| TRACE("(%08x)\n", policy); | |
| /* scan to see if we know this policy ID */ | |
| for (p = sh32_policy_table; p->policy; p++) | |
| { | |
| if (policy == p->policy) | |
| { | |
| break; | |
| } | |
| } | |
| if (p->policy == 0) | |
| { | |
| /* we don't know this policy, return 0 */ | |
| TRACE("unknown policy: (%08x)\n", policy); | |
| return 0; | |
| } | |
| /* we have a known policy */ | |
| /* first check if this policy has been cached, return it if so */ | |
| if (p->cache != SHELL_NO_POLICY) | |
| { | |
| return p->cache; | |
| } | |
| lstrcpyA(regstr, strRegistryPolicyA); | |
| lstrcatA(regstr, p->appstr); | |
| /* return 0 and don't set the cache if any registry errors occur */ | |
| retval = 0; | |
| if (RegOpenKeyA(HKEY_CURRENT_USER, regstr, &xhkey) == ERROR_SUCCESS) | |
| { | |
| if (RegQueryValueExA(xhkey, p->keystr, NULL, NULL, (LPBYTE)&retval, &datsize) == ERROR_SUCCESS) | |
| { | |
| p->cache = retval; | |
| } | |
| RegCloseKey(xhkey); | |
| } | |
| return retval; | |
| } | |
| /************************************************************************* | |
| * SHInitRestricted [SHELL32.244] | |
| * | |
| * Initialise the policy cache to speed up calls to SHRestricted(). | |
| * | |
| * PARAMS | |
| * unused [I] Reserved. | |
| * inpRegKey [I] Registry key to scan. | |
| * | |
| * RETURNS | |
| * Success: -1. The policy cache is initialised. | |
| * Failure: 0, if inpRegKey is any value other than NULL, "Policy", or | |
| * "Software\Microsoft\Windows\CurrentVersion\Policies". | |
| * | |
| * NOTES | |
| * Exported by ordinal. Introduced in Win98. | |
| */ | |
| BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey) | |
| { | |
| TRACE("(%p, %p)\n", unused, inpRegKey); | |
| /* first check - if input is non-NULL and points to the secret | |
| key string, then pass. Otherwise return 0. | |
| */ | |
| if (inpRegKey != NULL) | |
| { | |
| if (SHELL_OsIsUnicode()) | |
| { | |
| if (lstrcmpiW((LPWSTR)inpRegKey, strRegistryPolicyW) && | |
| lstrcmpiW((LPWSTR)inpRegKey, strPolicyW)) | |
| /* doesn't match, fail */ | |
| return 0; | |
| } | |
| else | |
| { | |
| if (lstrcmpiA((LPSTR)inpRegKey, strRegistryPolicyA) && | |
| lstrcmpiA((LPSTR)inpRegKey, strPolicyA)) | |
| /* doesn't match, fail */ | |
| return 0; | |
| } | |
| } | |
| return TRUE; | |
| } |