/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1992 **/ /**********************************************************************/ /* NTFSAcl.hxx This file contains the manifests for the NTFS front to the Generic ACL Editor. FILE HISTORY: Johnl 03-Jan-1992 Created beng 06-Apr-1992 Unicode fix */ #ifndef _NTFSACL_HXX_ #define _NTFSACL_HXX_ #ifndef RC_INVOKED #include APIERR EditNTFSAcl( HWND hwndParent, const TCHAR * pszServer, const TCHAR * pszResource, enum SED_PERM_TYPE sedpermtype, BOOL fIsFile ) ; /* This function determines if the drive pointed at by pszResource is an * NTFS drive */ APIERR IsNTFS( const TCHAR * pszResource, BOOL * pfIsNTFS ) ; APIERR CheckFileSecurity( const TCHAR * pszFileName, ACCESS_MASK DesiredAccess, BOOL * pfAccessGranted ) ; // // These are the different states the time sliced tree apply code maybe // in. // enum TREE_APPLY_STATE { APPLY_SEC_FMX_SELECTION, // Apply to the next FMX selection, start enum // if necessary APPLY_SEC_IN_FS_ENUM, // Haven't finished enumeration yet APPLY_SEC_FMX_POST_FS_ENUM // We've finished the enum and we may need // to put the perms. on the container } ; /************************************************************************* NAME: TREE_APPLY_CONTEXT SYNOPSIS: The TREE_APPLY_CONTEXT class is simply a container class that stores the current context for the task slicing used in the CANCEL_TASK_DIALOG. CAVEATS: Note that nlsSelItem is a reference. Nothing should be added to this class which can fail construction (this is really just an open structure). NOTES: pfsenum will be deleted if it isn't NULL. HISTORY: Johnl 21-Oct-1992 Created **************************************************************************/ class TREE_APPLY_CONTEXT { public: enum TREE_APPLY_STATE State ; // In FS enum or fmx selection HWND hwndFMXWindow ; // FMX Hwnd UINT iCurrent ; // Currently selected item UINT uiCount ; // Total number of selected items in Winfile BOOL fDepthFirstTraversal ; // Do a depth first tree apply BOOL fApplyToDirContents ; // Apply to contents w/o doing the tree NLS_STR & nlsSelItem ; // Currently selected FMX item BOOL fIsSelFile ; // Is the selected item a file? enum SED_PERM_TYPE sedpermtype ; // SED_AUDITS, SED_OWNER, SED_ACCESSES LPDWORD StatusReturn ; // Status passed by ACL editor BOOL fApplyToSubContainers ;// " BOOLEAN fApplyToSubObjects ; // " W32_FS_ENUM * pfsenum ; TREE_APPLY_CONTEXT( NLS_STR & nlsSel ) : nlsSelItem( nlsSel ), pfsenum ( NULL ) { /* nothing to do */ } ~TREE_APPLY_CONTEXT() { delete pfsenum ; } } ; /************************************************************************* NAME: NTFS_TREE_APPLY_CONTEXT SYNOPSIS: Supplies NTFS specific data for the NTFS_CANCEL_TREE_APPLY class PARENT: TREE_APPLY_CONTEXT HISTORY: Johnl 22-Oct-1992 Created **************************************************************************/ class NTFS_TREE_APPLY_CONTEXT : public TREE_APPLY_CONTEXT { public: OS_SECURITY_INFORMATION & osSecInfo ; // What's being set PSECURITY_DESCRIPTOR psecdesc ; // Container permissions PSECURITY_DESCRIPTOR psecdescNewObjects ; // Object permissions BOOL fBlowAwayDACLOnCont ; // Replace DACL granting the // current user full access on // containers NTFS_TREE_APPLY_CONTEXT( NLS_STR & nlsSel, OS_SECURITY_INFORMATION & osSec ) : TREE_APPLY_CONTEXT( nlsSel ), osSecInfo ( osSec ) { /* nothing to do */ } } ; /************************************************************************* NAME: LM_TREE_APPLY_CONTEXT SYNOPSIS: Simple derivation for Lanman PARENT: TREE_APPLY_CONTEXT NOTES: HISTORY: Johnl 23-Oct-1992 Created **************************************************************************/ class LM_TREE_APPLY_CONTEXT : public TREE_APPLY_CONTEXT { public: NET_ACCESS_1 * plmobjNetAccess1 ; LM_TREE_APPLY_CONTEXT( NLS_STR & nlsSel ) : TREE_APPLY_CONTEXT( nlsSel ) { /* nothing to do */ } } ; /************************************************************************* NAME: CANCEL_TREE_APPLY SYNOPSIS: Simply derivation of the CANCEL_TASK_DIALOG PARENT: CANCEL_TASK_DIALOG NOTES: HISTORY: Johnl 21-Oct-1992 Created **************************************************************************/ class CANCEL_TREE_APPLY : public CANCEL_TASK_DIALOG { public: CANCEL_TREE_APPLY( HWND hwndParent, TREE_APPLY_CONTEXT * pContext, const TCHAR * pszDlgTitle ) : CANCEL_TASK_DIALOG( (UINT) PtrToUlong(CANCEL_TASK_DIALOG_NAME), hwndParent, pszDlgTitle, (ULONG_PTR) pContext, (MSGID) IDS_CANCEL_TASK_ON_ERROR_MSG ) { /* Nothing to do */ } protected: virtual APIERR DoOneItem( ULONG_PTR ulContext, BOOL *pfContinue, BOOL *pfDisplayErrors, MSGID *msgidAlternateMessage ) ; virtual APIERR WriteSecurity( ULONG_PTR ulContext, const TCHAR * pszFileName, BOOL fIsFile, BOOL * pfContinue ) = 0 ; } ; /************************************************************************* NAME: NTFS_CANCEL_TREE_APPLY SYNOPSIS: Simple derivation that redefines WriteSecurity for NTFS PARENT: CANCEL_TREE_APPLY NOTES: Parameters for WriteSecurity are contained in the context structure HISTORY: Johnl 23-Oct-1992 Created **************************************************************************/ class NTFS_CANCEL_TREE_APPLY : public CANCEL_TREE_APPLY { public: NTFS_CANCEL_TREE_APPLY( HWND hwndParent, NTFS_TREE_APPLY_CONTEXT * pContext, const TCHAR * pszDlgTitle ) : CANCEL_TREE_APPLY( hwndParent, pContext, pszDlgTitle ) { /* Nothing to do */ } protected: virtual APIERR WriteSecurity( ULONG_PTR ulContext, const TCHAR * pszFileName, BOOL fIsFile, BOOL * pfContinue ) ; } ; /************************************************************************* NAME: LM_CANCEL_TREE_APPLY SYNOPSIS: Simple derivation that redefines WriteSecurity for Lanman PARENT: CANCEL_TREE_APPLY NOTES: Parameters for WriteSecurity are contained in the context structure HISTORY: Johnl 23-Oct-1992 Created **************************************************************************/ class LM_CANCEL_TREE_APPLY : public CANCEL_TREE_APPLY { public: LM_CANCEL_TREE_APPLY( HWND hwndParent, LM_TREE_APPLY_CONTEXT * pContext, const TCHAR * pszDlgTitle ) : CANCEL_TREE_APPLY( hwndParent, pContext, pszDlgTitle ) { /* Nothing to do */ } protected: virtual APIERR WriteSecurity( ULONG_PTR ulContext, const TCHAR * pszFileName, BOOL fIsFile, BOOL * pfContinue ) ; } ; #endif // RC_INVOKED #define IDS_NT_PERM_NAMES_BASE (IDS_UI_ACLEDIT_BASE+200) /* The following manifests are the resource IDs for the permission name * strings. */ #define IDS_FILE_PERM_SPEC_READ (IDS_NT_PERM_NAMES_BASE+1) #define IDS_FILE_PERM_SPEC_WRITE (IDS_NT_PERM_NAMES_BASE+2) #define IDS_FILE_PERM_SPEC_EXECUTE (IDS_NT_PERM_NAMES_BASE+3) #define IDS_FILE_PERM_SPEC_ALL (IDS_NT_PERM_NAMES_BASE+4) #define IDS_FILE_PERM_SPEC_DELETE (IDS_NT_PERM_NAMES_BASE+5) #define IDS_FILE_PERM_SPEC_READ_PERM (IDS_NT_PERM_NAMES_BASE+6) #define IDS_FILE_PERM_SPEC_CHANGE_PERM (IDS_NT_PERM_NAMES_BASE+7) #define IDS_FILE_PERM_SPEC_CHANGE_OWNER (IDS_NT_PERM_NAMES_BASE+8) #define IDS_FILE_PERM_GEN_NO_ACCESS (IDS_NT_PERM_NAMES_BASE+10) #define IDS_FILE_PERM_GEN_READ (IDS_NT_PERM_NAMES_BASE+11) #define IDS_FILE_PERM_GEN_MODIFY (IDS_NT_PERM_NAMES_BASE+12) #define IDS_FILE_PERM_GEN_ALL (IDS_NT_PERM_NAMES_BASE+13) #define IDS_DIR_PERM_SPEC_READ (IDS_NT_PERM_NAMES_BASE+16) #define IDS_DIR_PERM_SPEC_WRITE (IDS_NT_PERM_NAMES_BASE+17) #define IDS_DIR_PERM_SPEC_EXECUTE (IDS_NT_PERM_NAMES_BASE+18) #define IDS_DIR_PERM_SPEC_ALL (IDS_NT_PERM_NAMES_BASE+19) #define IDS_DIR_PERM_SPEC_DELETE (IDS_NT_PERM_NAMES_BASE+20) #define IDS_DIR_PERM_SPEC_READ_PERM (IDS_NT_PERM_NAMES_BASE+21) #define IDS_DIR_PERM_SPEC_CHANGE_PERM (IDS_NT_PERM_NAMES_BASE+22) #define IDS_DIR_PERM_SPEC_CHANGE_OWNER (IDS_NT_PERM_NAMES_BASE+23) #define IDS_DIR_PERM_GEN_NO_ACCESS (IDS_NT_PERM_NAMES_BASE+30) #define IDS_DIR_PERM_GEN_LIST (IDS_NT_PERM_NAMES_BASE+31) #define IDS_DIR_PERM_GEN_READ (IDS_NT_PERM_NAMES_BASE+32) #define IDS_DIR_PERM_GEN_DEPOSIT (IDS_NT_PERM_NAMES_BASE+33) #define IDS_DIR_PERM_GEN_PUBLISH (IDS_NT_PERM_NAMES_BASE+34) #define IDS_DIR_PERM_GEN_MODIFY (IDS_NT_PERM_NAMES_BASE+35) #define IDS_DIR_PERM_GEN_ALL (IDS_NT_PERM_NAMES_BASE+36) #define IDS_NEWFILE_PERM_SPEC_READ (IDS_NT_PERM_NAMES_BASE+41) #define IDS_NEWFILE_PERM_SPEC_WRITE (IDS_NT_PERM_NAMES_BASE+42) #define IDS_NEWFILE_PERM_SPEC_EXECUTE (IDS_NT_PERM_NAMES_BASE+43) #define IDS_NEWFILE_PERM_SPEC_ALL (IDS_NT_PERM_NAMES_BASE+44) #define IDS_NEWFILE_PERM_SPEC_DELETE (IDS_NT_PERM_NAMES_BASE+45) #define IDS_NEWFILE_PERM_SPEC_READ_PERM (IDS_NT_PERM_NAMES_BASE+46) #define IDS_NEWFILE_PERM_SPEC_CHANGE_PERM (IDS_NT_PERM_NAMES_BASE+47) #define IDS_NEWFILE_PERM_SPEC_CHANGE_OWNER (IDS_NT_PERM_NAMES_BASE+48) #define IDS_FILE_AUDIT_READ (IDS_NT_PERM_NAMES_BASE+60) #define IDS_FILE_AUDIT_WRITE (IDS_NT_PERM_NAMES_BASE+61) #define IDS_FILE_AUDIT_EXECUTE (IDS_NT_PERM_NAMES_BASE+62) #define IDS_FILE_AUDIT_DELETE (IDS_NT_PERM_NAMES_BASE+63) #define IDS_FILE_AUDIT_CHANGE_PERM (IDS_NT_PERM_NAMES_BASE+64) #define IDS_FILE_AUDIT_CHANGE_OWNER (IDS_NT_PERM_NAMES_BASE+65) #define IDS_DIR_AUDIT_READ (IDS_NT_PERM_NAMES_BASE+66) #define IDS_DIR_AUDIT_WRITE (IDS_NT_PERM_NAMES_BASE+67) #define IDS_DIR_AUDIT_EXECUTE (IDS_NT_PERM_NAMES_BASE+68) #define IDS_DIR_AUDIT_DELETE (IDS_NT_PERM_NAMES_BASE+69) #define IDS_DIR_AUDIT_CHANGE_PERM (IDS_NT_PERM_NAMES_BASE+70) #define IDS_DIR_AUDIT_CHANGE_OWNER (IDS_NT_PERM_NAMES_BASE+71) #endif // _NTFSACL_HXX_