Вариант точный
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 ResetInheritance (strPath, intWhatToDoWithInheritance)
Тусклый objFileSecSetting, objSecurityDescriptor, objMethod, objInParam
Тусклое intControlFlagsVar
Установленный objFileSecSetting = objService.Get («&_ """ Win32_LogicalFileSecuritySetting.Path=
Замените (strPath, «\», «\ \ ") & """")
objSecurityDescriptor objFileSecSetting.GetSecurityDescriptor
Выберите intWhatToDoWithInheritance случая
Покрывайте ENABLE_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_AUTO_INHERITED + SE_SELF_RELATIVE
Случай COPY_AND_TURN_OFF_INHERITANCE, REMOVE_AND_TURN_OFF_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_PROTECTED + SE_SELF_RELATIVE
Конец отборный
objSecurityDescriptor.ControlFlags = intControlFlagsVar
Установите objMethod = objFileSecSetting.Methods_ («SetSecurityDescriptor»)
Установите objInParam = objMethod.inParameters.SpawnInstance_ ()
objInParam.Properties_.item («дискриптор») = objSecurityDescriptor
objFileSecSetting.ExecMethod_ «SetSecurityDescriptor», objInParam
Подводная лодка конца
Sub DoWorkOnFolders (strPath)
Тусклое objWorkingFolder, objWorkingFile, objWorkingSubFolder
'Переустановите унаследование скоросшивателя ровное
strPath ResetInheritance, ENABLE_INHERITANCE
Установите objWorkingFolder = objFileSystem.GetFolder (strPath)
WScript.Echo «работая на» & strPath
Для каждого objWorkingFile в objWorkingFolder.Files
ResetInheritance objWorkingFile.Path, ENABLE_INHERITANCE
Затем
Для каждого objWorkingSubFolder в objWorkingFolder.SubFolders
DoWorkOnFolders objWorkingSubFolder.Path
Затем
Подводная лодка конца
'
'Главным образом Кодий
'
Тусклое objFileSystem, objLocator, objService, objRootFolder, objFile, objFolder
Установите objFileSystem = CreateObject («Scripting.FileSystemObject»)
Установите objLocator = CreateObject («WbemScripting.SWbemLocator»)
Установите objService = objLocator.ConnectServer (". », «корень/cimv2»)
Установите objRootFolder = objFileSystem.GetFolder (FS_TREE_ROOT)
Для каждого objFile в objRootFolder.Files
ResetInheritance objFile.Path, ENABLE_INHERITANCE
Затем
Установленное objFile = ничего
Для каждого objFolder в objRootFolder.SubFolders
DoWorkOnFolders objFolder.Path
Затем
Установите objFolder = ничего
Установите objRootFolder = ничего
Установите objService = ничего
Установите objLocator = ничего
Установите objFileSystem = ничего
|