Opção explícita
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
'
'Sub-rotinas
'
ResetInheritance secundário (strPath, intWhatToDoWithInheritance)
objFileSecSetting não ofuscante, objSecurityDescriptor, objMethod, objInParam
intControlFlagsVar não ofuscante
objFileSecSetting ajustado = objService.Get (de “&_ do """ Win32_LogicalFileSecuritySetting.Path=
Substituir (strPath, “\”, “\ \ ") & o """")
objSecurityDescriptor de objFileSecSetting.GetSecurityDescriptor
Selecionar o intWhatToDoWithInheritance do caso
Encaixotar ENABLE_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_AUTO_INHERITED + SE_SELF_RELATIVE
Caso COPY_AND_TURN_OFF_INHERITANCE, REMOVE_AND_TURN_OFF_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_PROTECTED + SE_SELF_RELATIVE
Extremidade seleta
objSecurityDescriptor.ControlFlags = intControlFlagsVar
Ajustar o objMethod = o objFileSecSetting.Methods_ (“SetSecurityDescriptor”)
Ajustar o objInParam = o objMethod.inParameters.SpawnInstance_ ()
objInParam.Properties_.item (“descritor”) = objSecurityDescriptor
objFileSecSetting.ExecMethod_ “SetSecurityDescriptor”, objInParam
Submarino da extremidade
DoWorkOnFolders secundário (strPath)
objWorkingFolder não ofuscante, objWorkingFile, objWorkingSubFolder
'Restaurar a herança nivelada do dobrador
strPath de ResetInheritance, ENABLE_INHERITANCE
Ajustar o objWorkingFolder = o objFileSystem.GetFolder (o strPath)
WScript.Echo “que trabalham em” & strPath
Para cada um objWorkingFile em objWorkingFolder.Files
ResetInheritance objWorkingFile.Path, ENABLE_INHERITANCE
Em seguida
Para cada objWorkingSubFolder em objWorkingFolder.SubFolders
DoWorkOnFolders objWorkingSubFolder.Path
Em seguida
Submarino da extremidade
'
'Código principal
'
objFileSystem não ofuscante, objLocator, objService, objRootFolder, objFile, objFolder
Ajustar o objFileSystem = o CreateObject (“Scripting.FileSystemObject”)
Ajustar o objLocator = o CreateObject (“WbemScripting.SWbemLocator”)
Ajustar o objService = o objLocator.ConnectServer (“. ”, “raiz/cimv2”)
Ajustar o objRootFolder = o objFileSystem.GetFolder (FS_TREE_ROOT)
Para cada um objFile em objRootFolder.Files
ResetInheritance objFile.Path, ENABLE_INHERITANCE
Em seguida
objFile ajustado = nada
Para cada objFolder em objRootFolder.SubFolders
DoWorkOnFolders objFolder.Path
Em seguida
Ajustar o objFolder = nada
Ajustar o objRootFolder = nada
Ajustar o objService = nada
Ajustar o objLocator = nada
Ajustar o objFileSystem = nada
|