Windows2000/private/windows/shell/upedit/upedit.h
2020-09-30 17:12:32 +02:00

298 lines
9.1 KiB
C

//#define UNICODE 1
#ifndef RC_INVOKED
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <ntlsa.h>
#include <ntmsv1_0.h>
#endif
#include <setjmp.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <port1632.h>
#include <commdlg.h>
#include <shellapi.h>
#include <getuser.h>
/* Icon IDs */
#define IDI_UPEICON 1
/* Dialog IDs */
#define IDD_UPEDLG 1
#define IDD_TEXT -1
#define IDD_UNLOCKEDGRPS 100
#define IDD_LOCKEDGRPS 101
#define IDD_LOCK 102
#define IDD_UNLOCK 103
#define IDD_EDITLEVEL 104
#define IDD_NORUN 105
#define IDD_NOSAVE 106
#define IDD_STARTUP 107
#define IDD_NETPRINTMGR 112
#define IDD_NETFILEMGR 113
#define IDD_SHOWCOMMONGRPS 114
#define IDD_USEDBY 115
#define IDD_BROWSER 116
#define IDD_SYNCLOGONSCRIPT 117
/* Menu Command Defines */
#define UPEMENU 200
#define IDM_NEW 201
#define IDM_OPEN 202
#define IDM_SAVECURRENT 203
#define IDM_SAVEDEFAULT 204
#define IDM_SAVESYSTEM 205
#define IDM_SAVEAS 206
#define IDM_EXIT 207
#define IDM_HELPINDEX 208
#define IDM_HELPSEARCH 209
#define IDM_HELPHELP 210
#define IDM_ABOUT 211
/* StringTable Defines */
#define IDS_PROGRAMGROUPS 301
#define IDS_EXIT 302
#define IDS_SAVEAS 303
#define IDS_SAVESETTINGS 304
#define IDS_ERRORSAVING 305
#define IDS_DEFEXT 306
#define IDS_FILTERS 307
#define IDS_NONE 308
#define IDS_UPETITLE 309
#define IDS_HELPERROR 310
#define IDS_LOCKERROR 311
#define IDS_RESETLOCKERROR 312
#define IDS_SAVEFILEMERROR 313
#define IDS_SAVEPRINTMERROR 314
#define IDS_PRIVILEGEERROR 315
#define IDS_EDITLEVEL0 316
#define IDS_EDITLEVEL1 317
#define IDS_EDITLEVEL2 318
#define IDS_EDITLEVEL3 319
#define IDS_OPENTITLE 320
#define IDS_OPENWARNING 321
#define IDS_OPENWARNINGMSG 322
#define IDS_UPETITLE1 323
#define IDS_COPYCURRENT 324
#define IDS_BROWSERTITLE 325
#define IDS_OPENERROR 326
#define IDS_OPENFAILED 327
#define IDS_OPENACCESSDENIED 328
#define IDS_OPENBADFORMAT 329
#define IDS_SELECTUSER 330
#define IDS_RESETPROTECTIONFAILED 332
#define IDS_SAVESYSTEM 333
#define IDS_SAVEDEFAULT 334
#define IDS_SAVECURRENT 335
#define IDS_SAVESYSFAILED 336
#define IDS_SAVEDEFFAILED 337
#define IDS_SAVECURFAILED 338
#define IDS_PROTECTERROR 339
#define IDS_NEWSYSTEMDEF 340
#define IDS_BROWSERERROR 341
#define IDS_ACCOUNTUNKNOWN 342
#define IDS_STARTUPNONE 343
#define IDS_SAVE 344
#define IDS_STARTUPGRP 345
#define IDS_INVALIDSID 346
// Help ids
#define IDH_HELPFIRST 5000
#define IDH_SYSMENU (IDH_HELPFIRST + 1000)
#define IDH_OPENDLG (IDH_HELPFIRST + 1001)
#define IDH_SAVEASDLG (IDH_HELPFIRST + 2001)
#define IDH_USERBROWSERDLG (IDH_HELPFIRST + 3001)
#define IDH_BROWSERLOCALGROUP (IDH_USERBROWSERDLG + 1)
#define IDH_BROWSERGLOBALGROUP (IDH_USERBROWSERDLG + 2)
#define IDH_BROWSERFINDUSER (IDH_USERBROWSERDLG + 3)
#define IDH_NEW (IDH_HELPFIRST + IDM_NEW)
#define IDH_OPEN (IDH_HELPFIRST + IDM_OPEN)
#define IDH_SAVECURRENT (IDH_HELPFIRST + IDM_SAVECURRENT)
#define IDH_SAVEDEFAULT (IDH_HELPFIRST + IDM_SAVEDEFAULT)
#define IDH_SAVESYSTEM (IDH_HELPFIRST + IDM_SAVESYSTEM)
#define IDH_SAVEAS (IDH_HELPFIRST + IDM_SAVEAS)
#define IDH_EXIT (IDH_HELPFIRST + IDM_EXIT)
#define IDH_HELPINDEX (IDH_HELPFIRST + IDM_HELPINDEX)
#define IDH_HELPSEARCH (IDH_HELPFIRST + IDM_HELPSEARCH)
#define IDH_HELPHELP (IDH_HELPFIRST + IDM_HELPHELP)
#define IDH_ABOUT (IDH_HELPFIRST + IDM_ABOUT)
#define MAXGROUPNAMELEN 30
#define MAXMESSAGELEN MAX_PATH
#define MAXTITLELEN 50
#define MAXKEYLEN 100
// Extracted from Progman.h
// Needed to get the group name from the group data.
typedef struct tagGROUPDEF {
DWORD dwMagic; /* magical bytes 'PMCC' */
DWORD cbGroup; /* length of group segment */
RECT rcNormal; /* rectangle of normal window */
POINT ptMin; /* point of icon */
WORD wCheckSum; /* adjust this for zero sum of file */
WORD nCmdShow; /* min, max, or normal state */
DWORD pName; /* name of group */
/* these four change interpretation */
WORD cxIcon; /* width of icons */
WORD cyIcon; /* hieght of icons */
WORD wIconFormat; /* planes and BPP in icons */
WORD wReserved; /* This word is no longer used. */
WORD cItems; /* number of items in group */
WORD Reserved1;
DWORD Reserved2;
DWORD rgiItems[1]; /* array of ITEMDEF offsets */
} GROUPDEF, *PGROUPDEF;
typedef GROUPDEF *LPGROUPDEF;
typedef struct tagGROUPDEF_A {
DWORD dwMagic; /* magical bytes 'PMCC' */
WORD wCheckSum; /* adjust this for zero sum of file */
WORD cbGroup; /* length of group segment */
RECT rcNormal; /* rectangle of normal window */
POINT ptMin; /* point of icon */
WORD nCmdShow; /* min, max, or normal state */
WORD pName; /* name of group */
/* these four change interpretation */
WORD cxIcon; /* width of icons */
WORD cyIcon; /* hieght of icons */
WORD wIconFormat; /* planes and BPP in icons */
WORD wReserved; /* This word is no longer used. */
WORD cItems; /* number of items in group */
WORD rgiItems[1]; /* array of ITEMDEF offsets */
} GROUPDEF_A, *PGROUPDEF_A;
typedef GROUPDEF_A *LPGROUPDEF_A;
typedef struct tagGROUPDATA {
BOOL bOrgLock; // True if the group was orginally locked
LPTSTR lpGroupKey; // The group key name in the registry. It may
// differ from the actual group name.
} GROUPDATA, *LPGROUPDATA;
#define GROUP_MAGIC 0x43434D50L /* 'PMCC' */
#define GROUP_UNICODE 0x43554D50L /* 'PMUC' */
// in upedit.c
BOOL InitApplication(HANDLE);
LONG APIENTRY MainWndProc(HWND, UINT, UINT, LONG);
LONG APIENTRY UPEDlgProc(HWND, UINT, WPARAM, LONG);
BOOL IsGroupLocked(LPTSTR);
BOOL InitializeUPESettings(HWND hwnd, BOOL bInitOrgSettings);
BOOL SaveUPESettingsToRegistry();
INT MessageFilter(INT nCode, WPARAM wParam, LPMSG lParam);
extern HANDLE hInst;
extern HWND hwndUPE;
extern HKEY hkeyCurrentUser;
extern HKEY hkeyProgramManager;
extern HKEY hkeyProgramGroupsCurrent;
extern HKEY hkeyProgramGroups;
extern HKEY hkeyPMRestrict;
extern HKEY hkeyPMSettings;
extern HANDLE hProgramGroupsEvent;
extern TCHAR szRestrict[];
extern TCHAR szUPETitle[];
extern BOOL bWorkFromCurrent;
extern UINT uiSaveSettingsMessage;
extern DWORD dwHelpContext;
extern HHOOK hhkMsgFilter;
// in upeutil.c
void CentreWindow(HWND hwnd);
HANDLE APIENTRY CreateProgramGroupsEvent();
VOID APIENTRY ResetProgramGroupsEvent();
BOOL APIENTRY HasProgramGroupsKeyChanged();
VOID APIENTRY HandleProgramGroupsKeyChange(HWND hwnd);
BOOL APIENTRY EnablePrivilege(DWORD Privilege, BOOL Enable);
BOOL APIENTRY GetCurrentUserSid(PVOID *pCurrentUserSid);
BOOL APIENTRY GetUserOrGroup(PVOID *pUserOrGroupSID, LPTSTR lpUserOrGroupName, DWORD cb);
BOOL APIENTRY LockGroups(BOOL bResetOriginalLock);
VOID InitializeGlobalSids();
BOOL GetCurrentProfileSecurityDescriptor(PSECURITY_DESCRIPTOR *pSecDesc);
// For Security ACL munging
NTSTATUS
MakeKeyUserAdminWriteableOnly(
IN HANDLE RootKey,
IN PUNICODE_STRING RelativeName
);
BOOL
IsKeyUserAdminWriteableOnly(
IN HANDLE RootKey,
IN PUNICODE_STRING RelativeName
);
BOOL
GetSidFromOpenedProfile(
PSID *pSid
);
#ifndef UPP_SEC_UMTEST
NTSTATUS
ApplyProfileProtection(
IN PSECURITY_DESCRIPTOR SecDesc,
IN PSID UserOrGroup,
IN HANDLE RootKey
);
#endif
NTSTATUS
ApplyAclToRegistryTree (
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN HANDLE RootKey
);
NTSTATUS
ApplyAclToChildren (
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN HANDLE Parent
);
BOOL APIENTRY ClearTempUserProfile();
VOID APIENTRY FixupNulls(LPTSTR p);
BOOL APIENTRY GetProfileName(LPTSTR lpFilePath, DWORD cb, BOOL bOpenFilename);
BOOL APIENTRY OpenUserProfile(LPTSTR szFileName, PSID *pUserSid);
BOOL APIENTRY ResetCurrentProfileProtection(PSID CurrentUserSid);
BOOL APIENTRY SaveUserProfile(PSID UserSid, LPTSTR lpFilePath);
BOOL APIENTRY SaveCurrentProfile(PSECURITY_DESCRIPTOR pInitialSecDesc, PSID CurrentUserSid);
BOOL APIENTRY SaveDefaultProfile();
BOOL APIENTRY SaveSystemProfile();
PSECURITY_DESCRIPTOR CreateSecurityDescriptorForFile(PSID pSid, LPTSTR lpFile);
BOOL DeleteSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor);