ReactOS  0.4.14-dev-1314-gacf135d
shpolicy.c
Go to the documentation of this file.
1 /*
2  * shpolicy.c - Data for shell/system policies.
3  *
4  * Copyright 1999 Ian Schmidt <ischmidt@cfl.rr.com>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  *
20  * NOTES:
21  *
22  * Some of these policies can be tweaked via the System Policy
23  * Editor which came with the Win95 Migration Guide, although
24  * there doesn't appear to be an updated Win98 version that
25  * would handle the many new policies introduced since then.
26  * You could easily write one with the information in
27  * this file...
28  *
29  * Up to date as of SHELL32 v5.00 (W2K)
30  */
31 
32 #include <stdarg.h>
33 #include <stdlib.h>
34 #include <string.h>
35 
36 #define WIN32_NO_STATUS
37 #define _INC_WINDOWS
38 
39 #include <windef.h>
40 #include <winbase.h>
41 #include <shlobj.h>
42 #include <wine/debug.h>
43 
44 #include "shell32_main.h"
45 
47 
48 #define SHELL_NO_POLICY 0xffffffff
49 
50 typedef struct tagPOLICYDAT
51 {
52  DWORD policy; /* policy value passed to SHRestricted */
53  LPCSTR appstr; /* application str such as "Explorer" */
54  LPCSTR keystr; /* name of the actual registry key / policy */
55  DWORD cache; /* cached value or 0xffffffff for invalid */
57 
58 /* registry strings */
59 static const CHAR strRegistryPolicyA[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies";
60 static const WCHAR strRegistryPolicyW[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o',
61  's','o','f','t','\\','W','i','n','d','o','w','s','\\',
62  'C','u','r','r','e','n','t','V','e','r','s','i','o','n',
63  '\\','P','o','l','i','c','i','e','s',0};
64 static const CHAR strPolicyA[] = "Policy";
65 static const WCHAR strPolicyW[] = {'P','o','l','i','c','y',0};
66 
67 /* application strings */
68 
69 static const char strExplorer[] = {"Explorer"};
70 static const char strActiveDesk[] = {"ActiveDesktop"};
71 static const char strWinOldApp[] = {"WinOldApp"};
72 static const char strAddRemoveProgs[] = {"AddRemoveProgs"};
73 
74 /* key strings */
75 
76 static const char strNoFileURL[] = {"NoFileUrl"};
77 static const char strNoFolderOptions[] = {"NoFolderOptions"};
78 static const char strNoChangeStartMenu[] = {"NoChangeStartMenu"};
79 static const char strNoWindowsUpdate[] = {"NoWindowsUpdate"};
80 static const char strNoSetActiveDesktop[] = {"NoSetActiveDesktop"};
81 static const char strNoForgetSoftwareUpdate[] = {"NoForgetSoftwareUpdate"};
82 //static const char strNoMSAppLogo[] = {"NoMSAppLogo5ChannelNotify"};
83 static const char strForceCopyACLW[] = {"ForceCopyACLWithFile"};
84 static const char strNoResolveTrk[] = {"NoResolveTrack"};
85 static const char strNoResolveSearch[] = {"NoResolveSearch"};
86 static const char strNoEditComponent[] = {"NoEditingComponents"};
87 static const char strNoMovingBand[] = {"NoMovingBands"};
88 static const char strNoCloseDragDrop[] = {"NoCloseDragDropBands"};
89 static const char strNoCloseComponent[] = {"NoClosingComponents"};
90 static const char strNoDelComponent[] = {"NoDeletingComponents"};
91 static const char strNoAddComponent[] = {"NoAddingComponents"};
92 static const char strNoComponent[] = {"NoComponents"};
93 static const char strNoChangeWallpaper[] = {"NoChangingWallpaper"};
94 static const char strNoHTMLWallpaper[] = {"NoHTMLWallpaper"};
95 static const char strNoCustomWebView[] = {"NoCustomizeWebView"};
96 static const char strClassicShell[] = {"ClassicShell"};
97 static const char strClearRecentDocs[] = {"ClearRecentDocsOnExit"};
98 static const char strNoFavoritesMenu[] = {"NoFavoritesMenu"};
99 static const char strNoActiveDesktopChanges[] = {"NoActiveDesktopChanges"};
100 static const char strNoActiveDesktop[] = {"NoActiveDesktop"};
101 static const char strNoRecentDocMenu[] = {"NoRecentDocsMenu"};
102 static const char strNoRecentDocHistory[] = {"NoRecentDocsHistory"};
103 static const char strNoInetIcon[] = {"NoInternetIcon"};
104 static const char strNoSettingsWizard[] = {"NoSettingsWizards"};
105 static const char strNoLogoff[] = {"NoLogoff"};
106 static const char strNoNetConDis[] = {"NoNetConnectDisconnect"};
107 static const char strNoViewContextMenu[] = {"NoViewContextMenu"};
108 static const char strNoTrayContextMenu[] = {"NoTrayContextMenu"};
109 static const char strNoWebMenu[] = {"NoWebMenu"};
110 static const char strLnkResolveIgnoreLnkInfo[] = {"LinkResolveIgnoreLinkInfo"};
111 static const char strNoCommonGroups[] = {"NoCommonGroups"};
112 static const char strEnforceShlExtSecurity[] = {"EnforceShellExtensionSecurity"};
113 static const char strNoRealMode[] = {"NoRealMode"};
114 static const char strMyDocsOnNet[] = {"MyDocsOnNet"};
115 static const char strNoStartMenuSubfolder[] = {"NoStartMenuSubFolders"};
116 static const char strNoAddPrinters[] = {"NoAddPrinter"};
117 static const char strNoDeletePrinters[] = {"NoDeletePrinter"};
118 static const char strNoPrintTab[] = {"NoPrinterTabs"};
119 static const char strRestrictRun[] = {"RestrictRun"};
120 static const char strNoStartBanner[] = {"NoStartBanner"};
121 static const char strNoNetworkNeighborhood[] = {"NoNetHood"};
122 static const char strNoDriveTypeAtRun[] = {"NoDriveTypeAutoRun"};
123 static const char strNoDrivesAutoRun[] = {"NoDriveAutoRun"};
124 static const char strSeparateProcess[] = {"SeparateProcess"};
125 static const char strNoDrives[] = {"NoDrives"};
126 static const char strNoFind[] = {"NoFind"};
127 static const char strNoDesktop[] = {"NoDesktop"};
128 static const char strNoSetTaskBar[] = {"NoSetTaskbar"};
129 static const char strNoSetFld[] = {"NoSetFolders"};
130 static const char strNoFileMenu[] = {"NoFileMenu"};
131 static const char strNoSaveSetting[] = {"NoSaveSettings"};
132 static const char strNoClose[] = {"NoClose"};
133 static const char strNoRun[] = {"NoRun"};
134 #ifdef __REACTOS__
135 static const char strNoSimpleStartMenu[] = {"NoSimpleStartMenu"};
136 #endif
137 
138 /* policy data array */
140 {
141  {
142  REST_NORUN,
143  strExplorer,
144  strNoRun,
146  },
147  {
148  REST_NOCLOSE,
149  strExplorer,
150  strNoClose,
152  },
153  {
155  strExplorer,
158  },
159  {
161  strExplorer,
164  },
165  {
167  strExplorer,
168  strNoSetFld,
170  },
171  {
173  strExplorer,
176  },
177  {
179  strExplorer,
180  strNoDesktop,
182  },
183  {
184  REST_NOFIND,
185  strExplorer,
186  strNoFind,
188  },
189  {
191  strExplorer,
192  strNoDrives,
194  },
195  {
197  strExplorer,
200  },
201  {
203  strExplorer,
206  },
207  {
209  strExplorer,
212  },
213  {
215  strExplorer,
218  },
219  {
221  strExplorer,
224  },
225  {
227  strExplorer,
230  },
231  {
233  strExplorer,
236  },
237  {
239  strExplorer,
242  },
243  {
245  strExplorer,
248  },
249  {
251  strExplorer,
254  },
255  {
257  strWinOldApp,
260  },
261  {
263  strExplorer,
266  },
267  {
269  strExplorer,
272  },
273  {
275  strExplorer,
278  },
279  {
281  strExplorer,
284  },
285  {
286  REST_NOWEB,
287  strExplorer,
288  strNoWebMenu,
290  },
291  {
293  strExplorer,
296  },
297  {
299  strExplorer,
302  },
303  {
305  strExplorer,
308  },
309  {
311  strExplorer,
312  strNoLogoff,
314  },
315  {
317  strExplorer,
320  },
321  {
323  strExplorer,
326  },
327  {
329  strExplorer,
332  },
333  {
335  strExplorer,
338  },
339  {
341  strExplorer,
344  },
345  {
347  strExplorer,
350  },
351  {
353  strExplorer,
356  },
357  {
359  strExplorer,
362  },
363  {
365  strExplorer,
368  },
369  {
371  strExplorer,
374  },
375  {
380  },
381  {
386  },
387  {
392  },
393  {
398  },
399  {
404  },
405  {
410  },
411  {
416  },
417  {
422  },
423  {
428  },
429  {
431  strExplorer,
434  },
435  {
437  strExplorer,
440  },
441  {
443  strExplorer,
446  },
447 #if (NTDDI_VERSION < NTDDI_LONGHORN)
448  {
449  REST_NOLOGO3CHANNELNOTIFY,
450  strExplorer,
451  strNoMSAppLogo,
453  },
454 #endif
455  {
457  strExplorer,
460  },
461  {
463  strExplorer,
466  },
467  {
469  strExplorer,
472  },
473  {
475  strExplorer,
478  },
479  {
481  strExplorer,
484  },
485  {
487  strExplorer,
488  "FindComputers",
490  },
491  {
493  strExplorer,
494  "IntelliMenus",
496  },
497  {
499  strExplorer,
500  "MemCheckBoxInRunDlg",
502  },
503  {
506  "ShowPostSetup",
508  },
509  {
510  REST_NOCSC,
511  strExplorer,
512  "NoSyncAll",
514  },
515  {
517  strExplorer,
518  "NoControlPanel",
520  },
521  {
523  strExplorer,
524  "EnumWorkgroup",
526  },
527  {
530  "NoAddRemovePrograms",
532  },
533  {
536  "NoRemovePage",
538  },
539  {
542  "NoAddPage",
544  },
545  {
548  "NoWindowsSetupPage",
550  },
551  {
553  strExplorer,
554  "",
556  },
557  {
559  strExplorer,
560  "NoChangeMappedDriveLabel",
562  },
563  {
565  strExplorer,
566  "NoChangeMappedDriveComment",
568  },
569  {
571  strExplorer,
572  "MaxRecentDocs",
574  },
575  {
577  strExplorer,
578  "NoNetworkConnections",
580  },
581  {
583  strExplorer,
584  "ForceStartMenuLogoff",
586  },
587  {
589  strExplorer,
590  "NoWebView",
592  },
593  {
595  strExplorer,
596  "NoCustomizeThisFolder",
598  },
599  {
601  strExplorer,
602  "NoEncryption",
604  },
605  {
607  strExplorer,
608  "AllowFrenchEncryption",
610  },
611  {
613  strExplorer,
614  "DontShowSuperHidden",
616  },
617  {
619  strExplorer,
620  "NoShellSearchButton",
622  },
623  {
625  strExplorer,
626  "NoHardwareTab",
628  },
629  {
631  strExplorer,
632  "NoRunasInstallPrompt",
634  },
635  {
637  strExplorer,
638  "PromptRunasInstallNetPath",
640  },
641  {
643  strExplorer,
644  "NoManageMyComputerVerb",
646  },
647  {
649  strExplorer,
650  "NoRecentDocsNetHood",
652  },
653  {
655  strExplorer,
656  "DisallowRun",
658  },
659  {
661  strExplorer,
662  "NoWelcomeScreen",
664  },
665  {
667  strExplorer,
668  "RestrictCpl",
670  },
671  {
673  strExplorer,
674  "DisallowCpl",
676  },
677  {
679  strExplorer,
680  "NoSMBalloonTip",
682  },
683  {
685  strExplorer,
686  "NoSMHelp",
688  },
689  {
691  strExplorer,
692  "NoWinKeys",
694  },
695  {
697  strExplorer,
698  "NoEncryptOnMove",
700  },
701  {
703  strExplorer,
704  "DisableLocalMachineRun",
706  },
707  {
709  strExplorer,
710  "DisableCurrentUserRun",
712  },
713  {
715  strExplorer,
716  "DisableLocalMachineRunOnce",
718  },
719  {
721  strExplorer,
722  "DisableCurrentUserRunOnce",
724  },
725  {
727  strExplorer,
728  "ForceActiveDesktopOn",
730  },
731  {
733  strExplorer,
734  "NoComputersNearMe",
736  },
737  {
739  strExplorer,
740  "NoViewOnDrive",
742  },
743  {
745  strExplorer,
746  "NoNetCrawl",
748  },
749  {
751  strExplorer,
752  "NoSharedDocs",
754  },
755  {
757  strExplorer,
758  "NoSMMyDocs",
760  },
761 /* 0x4000050 - 0x4000060 */
762  {
764  strExplorer,
765  "NoneLegacyShellMode",
767  },
768 #ifdef __REACTOS__
769  {
771  strExplorer,
772  strNoSimpleStartMenu,
774  },
775 #endif
776  {
778  strExplorer,
779  "StartRunNoHOMEPATH",
781  },
782 /* 0x4000061 - 0x4000086 */
783  {
785  strExplorer,
786  "NoDisconnect",
788  },
789  {
791  strExplorer,
792  "NoNTSecurity",
794  },
795  {
797  strExplorer,
798  "NoFileAssociate",
800  },
801  {
802  0x50000024,
803  strExplorer,
804  strNoFileURL,
806  },
807  {
808  0,
809  0,
810  0,
812  }
813 };
814 
815 /*************************************************************************
816  * SHRestricted [SHELL32.100]
817  *
818  * Get the value associated with a policy Id.
819  *
820  * PARAMS
821  * pol [I] Policy Id
822  *
823  * RETURNS
824  * The queried value for the policy.
825  *
826  * NOTES
827  * Exported by ordinal.
828  * This function caches the retrieved values to prevent unnecessary registry access,
829  * if SHSettingsChanged() was previously called.
830  *
831  * REFERENCES
832  * a: MS System Policy Editor.
833  * b: 98Lite 2.0 (which uses many of these policy keys) http://www.98lite.net/
834  * c: 'The Windows 95 Registry', by John Woram, 1996 MIS: Press
835  */
837 {
838  char regstr[256];
839  HKEY xhkey;
840  DWORD retval, datsize = 4;
841  LPPOLICYDATA p;
842 
843  TRACE("(%08x)\n", policy);
844 
845  /* scan to see if we know this policy ID */
846  for (p = sh32_policy_table; p->policy; p++)
847  {
848  if (policy == p->policy)
849  {
850  break;
851  }
852  }
853 
854  if (p->policy == 0)
855  {
856  /* we don't know this policy, return 0 */
857  TRACE("unknown policy: (%08x)\n", policy);
858  return 0;
859  }
860 
861  /* we have a known policy */
862 
863  /* first check if this policy has been cached, return it if so */
864  if (p->cache != SHELL_NO_POLICY)
865  {
866  return p->cache;
867  }
868 
869  lstrcpyA(regstr, strRegistryPolicyA);
870  lstrcatA(regstr, "\\");
871  lstrcatA(regstr, p->appstr);
872 
873  /* return 0 and don't set the cache if any registry errors occur */
874 #ifndef __REACTOS__
875  retval = 0;
876  if (RegOpenKeyA(HKEY_CURRENT_USER, regstr, &xhkey) == ERROR_SUCCESS)
877 #else // FIXME: Actually this *MUST* use shlwapi!SHRestrictionLookup()
878  // See http://www.geoffchappell.com/studies/windows/shell/shell32/api/util/shrestricted.htm
879  retval = RegOpenKeyA(HKEY_LOCAL_MACHINE, regstr, &xhkey);
880  if (retval != ERROR_SUCCESS)
881  {
882  retval = RegOpenKeyA(HKEY_CURRENT_USER, regstr, &xhkey);
883  if (retval != ERROR_SUCCESS)
884  return 0;
885  }
886 #endif
887  {
888  if (RegQueryValueExA(xhkey, p->keystr, NULL, NULL, (LPBYTE)&retval, &datsize) == ERROR_SUCCESS)
889  {
890  p->cache = retval;
891  }
892  RegCloseKey(xhkey);
893  }
894  return retval;
895 }
896 
897 /*************************************************************************
898  * SHSettingsChanged [SHELL32.244]
899  *
900  * Initialise the policy cache to speed up calls to SHRestricted().
901  *
902  * PARAMS
903  * unused [I] Reserved.
904  * inpRegKey [I] Registry key to scan.
905  *
906  * RETURNS
907  * Success: -1. The policy cache is initialised.
908  * Failure: 0, if inpRegKey is any value other than NULL, "Policy", or
909  * "Software\Microsoft\Windows\CurrentVersion\Policies".
910  *
911  * NOTES
912  * Exported by ordinal. Introduced in Win98.
913  */
915 {
916  TRACE("(%p, %p)\n", unused, inpRegKey);
917 
918  /* first check - if input is non-NULL and points to the secret
919  key string, then pass. Otherwise return 0.
920  */
921  if (inpRegKey != NULL)
922  {
923  if (SHELL_OsIsUnicode())
924  {
925  if (lstrcmpiW(inpRegKey, strRegistryPolicyW) &&
926  lstrcmpiW(inpRegKey, strPolicyW))
927  /* doesn't match, fail */
928  return FALSE;
929  }
930  else
931  {
932  if (lstrcmpiA(inpRegKey, strRegistryPolicyA) &&
933  lstrcmpiA(inpRegKey, strPolicyA))
934  /* doesn't match, fail */
935  return FALSE;
936  }
937  }
938 
939  return TRUE;
940 }
static const char strNoSetFld[]
Definition: shpolicy.c:129
static const char strNoNetConDis[]
Definition: shpolicy.c:106
struct tagPOLICYDAT * LPPOLICYDATA
static const char strNoTrayContextMenu[]
Definition: shpolicy.c:108
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3257
static const char strNoResolveTrk[]
Definition: shpolicy.c:84
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
Definition: reg.c:4023
static const char strNoDriveTypeAtRun[]
Definition: shpolicy.c:122
#define TRUE
Definition: types.h:120
static const char strNoMovingBand[]
Definition: shpolicy.c:87
static const char strNoCloseComponent[]
Definition: shpolicy.c:89
struct tagPOLICYDAT POLICYDATA
static const char strClearRecentDocs[]
Definition: shpolicy.c:97
#define ERROR_SUCCESS
Definition: deptool.c:10
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:42
WINE_DEFAULT_DEBUG_CHANNEL(shell)
static const char strNoStartBanner[]
Definition: shpolicy.c:120
LPCSTR appstr
Definition: shpolicy.c:53
static const char strAddRemoveProgs[]
Definition: shpolicy.c:72
#define HKEY_CURRENT_USER
Definition: winreg.h:11
char CHAR
Definition: xmlstorage.h:175
static const char strNoDeletePrinters[]
Definition: shpolicy.c:117
static const char strExplorer[]
Definition: shpolicy.c:69
static const char strNoChangeStartMenu[]
Definition: shpolicy.c:78
static const char strNoComponent[]
Definition: shpolicy.c:92
static const char strNoSaveSetting[]
Definition: shpolicy.c:131
static __inline BOOL SHELL_OsIsUnicode(void)
Definition: shell32_main.h:130
static const char strForceCopyACLW[]
Definition: shpolicy.c:83
static const char strNoFolderOptions[]
Definition: shpolicy.c:77
static const char strActiveDesk[]
Definition: shpolicy.c:70
static const char strMyDocsOnNet[]
Definition: shpolicy.c:114
DWORD cache
Definition: shpolicy.c:55
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
RESTRICTIONS
Definition: shlobj.h:1545
static const char strWinOldApp[]
Definition: shpolicy.c:71
static const char strNoActiveDesktopChanges[]
Definition: shpolicy.c:99
static const char strNoDrivesAutoRun[]
Definition: shpolicy.c:123
WORD unused[29]
Definition: crypt.c:1155
static const char strNoSetActiveDesktop[]
Definition: shpolicy.c:80
static const char strNoResolveSearch[]
Definition: shpolicy.c:85
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:53
static const char strNoFind[]
Definition: shpolicy.c:126
unsigned int BOOL
Definition: ntddk_ex.h:94
static const char strLnkResolveIgnoreLnkInfo[]
Definition: shpolicy.c:110
static const char strNoLogoff[]
Definition: shpolicy.c:105
static const char strNoSetTaskBar[]
Definition: shpolicy.c:128
static const CHAR strPolicyA[]
Definition: shpolicy.c:64
#define SHELL_NO_POLICY
Definition: shpolicy.c:48
smooth NULL
Definition: ftsmooth.c:416
static const char strNoDrives[]
Definition: shpolicy.c:125
static const CHAR strRegistryPolicyA[]
Definition: shpolicy.c:59
const char * LPCSTR
Definition: xmlstorage.h:183
static const char strNoCommonGroups[]
Definition: shpolicy.c:111
static const char strClassicShell[]
Definition: shpolicy.c:96
LPCSTR keystr
Definition: shpolicy.c:54
static const char strNoRealMode[]
Definition: shpolicy.c:113
static const char strNoInetIcon[]
Definition: shpolicy.c:103
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:123
static const char strNoSettingsWizard[]
Definition: shpolicy.c:104
static const char strNoNetworkNeighborhood[]
Definition: shpolicy.c:121
#define TRACE(s)
Definition: solgame.cpp:4
static const char strNoCustomWebView[]
Definition: shpolicy.c:95
static const char strNoViewContextMenu[]
Definition: shpolicy.c:107
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const char strNoChangeWallpaper[]
Definition: shpolicy.c:93
static const char strNoRecentDocMenu[]
Definition: shpolicy.c:101
#define WINAPI
Definition: msvc.h:6
unsigned long DWORD
Definition: ntddk_ex.h:95
static const char strNoFileMenu[]
Definition: shpolicy.c:130
static const char strNoWebMenu[]
Definition: shpolicy.c:109
static const char strNoEditComponent[]
Definition: shpolicy.c:86
static const char strNoAddPrinters[]
Definition: shpolicy.c:116
static const char strNoClose[]
Definition: shpolicy.c:132
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:100
static const WCHAR strPolicyW[]
Definition: shpolicy.c:65
static const char strNoHTMLWallpaper[]
Definition: shpolicy.c:94
static const char strNoDelComponent[]
Definition: shpolicy.c:90
static const char strNoForgetSoftwareUpdate[]
Definition: shpolicy.c:81
static const char strNoFavoritesMenu[]
Definition: shpolicy.c:98
static const char strNoPrintTab[]
Definition: shpolicy.c:118
static const char strNoActiveDesktop[]
Definition: shpolicy.c:100
static const char strNoWindowsUpdate[]
Definition: shpolicy.c:79
static const char strEnforceShlExtSecurity[]
Definition: shpolicy.c:112
void shell(int argc, const char *argv[])
Definition: cmds.c:1231
static const char strNoRecentDocHistory[]
Definition: shpolicy.c:102
static const WCHAR strRegistryPolicyW[]
Definition: shpolicy.c:60
static const char strNoCloseDragDrop[]
Definition: shpolicy.c:88
static const char strNoFileURL[]
Definition: shpolicy.c:76
CONST void * LPCVOID
Definition: windef.h:191
static const char strNoAddComponent[]
Definition: shpolicy.c:91
static const char strSeparateProcess[]
Definition: shpolicy.c:124
DWORD policy
Definition: shpolicy.c:52
GLfloat GLfloat p
Definition: glext.h:8902
static const char strNoStartMenuSubfolder[]
Definition: shpolicy.c:115
DWORD WINAPI SHRestricted(RESTRICTIONS policy)
Definition: shpolicy.c:836
BOOL WINAPI SHSettingsChanged(LPCVOID unused, LPCVOID inpRegKey)
Definition: shpolicy.c:914
static const char strNoRun[]
Definition: shpolicy.c:133
static const char strRestrictRun[]
Definition: shpolicy.c:119
static const char strNoDesktop[]
Definition: shpolicy.c:127
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
static POLICYDATA sh32_policy_table[]
Definition: shpolicy.c:139