Option explicite
Const FS_TREE_ROOT = « C:\Temp »
Const SE_DACL_PRESENT = 4
Const SE_DACL_AUTO_INHERITED = 1024
Const SE_DACL_PROTECTED = 4096
Const SE_SELF_RELATIVE = 32768
Const ENABLE_INHERITANCE = 1
Const COPY_AND_TURN_OFF_INHERITANCE = 2
Const REMOVE_AND_TURN_OFF_INHERITANCE = 3
'
'Sous-routines
'
ResetInheritance secondaire (strPath, intWhatToDoWithInheritance)
Faible objFileSecSetting, objSecurityDescriptor, objMethod, objInParam
Faible intControlFlagsVar
objFileSecSetting réglé = objService.Get (« &_ de """ de Win32_LogicalFileSecuritySetting.Path=
Remplacer (strPath, « \ », « \ \ ") et le """")
objSecurityDescriptor d'objFileSecSetting.GetSecurityDescriptor
Choisir l'intWhatToDoWithInheritance de cas
Enfermer ENABLE_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_AUTO_INHERITED + SE_SELF_RELATIVE
Cas COPY_AND_TURN_OFF_INHERITANCE, REMOVE_AND_TURN_OFF_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_PROTECTED + SE_SELF_RELATIVE
Extrémité choisie
objSecurityDescriptor.ControlFlags = intControlFlagsVar
Placer l'objMethod = l'objFileSecSetting.Methods_ (« SetSecurityDescriptor »)
Placer l'objInParam = l'objMethod.inParameters.SpawnInstance_ ()
objInParam.Properties_.item (« descripteur ») = objSecurityDescriptor
objFileSecSetting.ExecMethod_ « SetSecurityDescriptor », objInParam
Sous-marin d'extrémité
DoWorkOnFolders secondaire (strPath)
Faible objWorkingFolder, objWorkingFile, objWorkingSubFolder
'Remettre à zéro la transmission de niveau de chemise
strPath de ResetInheritance, ENABLE_INHERITANCE
Placer l'objWorkingFolder = l'objFileSystem.GetFolder (le strPath)
WScript.Echo « fonctionnant sur » et strPath
Pour chacun objWorkingFile dans objWorkingFolder.Files
ResetInheritance objWorkingFile.Path, ENABLE_INHERITANCE
Après
Pour chaque objWorkingSubFolder dans objWorkingFolder.SubFolders
DoWorkOnFolders objWorkingSubFolder.Path
Après
Sous-marin d'extrémité
'
'Code principal
'
Faible objFileSystem, objLocator, objService, objRootFolder, objFile, objFolder
Placer l'objFileSystem = le CreateObject (« Scripting.FileSystemObject »)
Placer l'objLocator = le CreateObject (« WbemScripting.SWbemLocator »)
Placer l'objService = l'objLocator.ConnectServer (". », « racine/cimv2 »)
Placer l'objRootFolder = l'objFileSystem.GetFolder (FS_TREE_ROOT)
Pour chacun objFile dans objRootFolder.Files
ResetInheritance objFile.Path, ENABLE_INHERITANCE
Après
objFile réglé = rien
Pour chaque objFolder dans objRootFolder.SubFolders
DoWorkOnFolders objFolder.Path
Après
Placer l'objFolder = rien
Placer l'objRootFolder = rien
Placer l'objService = rien
Placer l'objLocator = rien
Placer l'objFileSystem = rien
|