Explicit alternativ
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
',
'Subroutines
',
UnderResetInheritance (strPath, intWhatToDoWithInheritancen)
Dunkel objFileSecSetting, objSecurityDescriptor, objMethod, objInParam
Dunkelt intControlFlagsVar
Uppsättning som objFileSecSetting = objService.Get (”Win32_LogicalFileSecuritySetting.Path=-""" &_
Byt ut (strPath, ”\”, ”\ \”) & """"),
objFileSecSetting.GetSecurityDescriptor-objSecurityDescriptor
Välj fallintWhatToDoWithInheritancen
Case ENABLE_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_AUTO_INHERITED + SE_SELF_RELATIVE
Fall COPY_AND_TURN_OFF_INHERITANCE, REMOVE_AND_TURN_OFF_INHERITANCE
intControlFlagsVar = SE_DACL_PRESENT + SE_DACL_PROTECTED + SE_SELF_RELATIVE
Avsluta valt
objSecurityDescriptor.ControlFlags = intControlFlagsVar
Fastställd objMethod = objFileSecSetting.Methods_ (”SetSecurityDescriptor”)
Fastställd objInParam = objMethod.inParameters.SpawnInstance_ ()
objInParam.Properties_.item (”deskriptor”) = objSecurityDescriptor
objFileSecSetting.ExecMethod_ ”SetSecurityDescriptor”, objInParam
Avsluta suben
Sub DoWorkOnFolders (strPath)
Dunkel objWorkingFolder som är objWorkingFile, objWorkingSubFolder
'Nollställa jämnt arv för mappen
ResetInheritance strPath, ENABLE_INHERITANCE
Fastställd objWorkingFolder = objFileSystem.GetFolder (strPath)
WScript.Echo ”arbete på” & strPath
För varje som är objWorkingFile i objWorkingFolder.Files
ResetInheritance objWorkingFile.Path, ENABLE_INHERITANCE
Därefter
För varje objWorkingSubFolder i objWorkingFolder.SubFolders
DoWorkOnFolders objWorkingSubFolder.Path
Därefter
Avsluta suben
',
'Huvudsakligt kodifiera
',
Dunkel objFileSystem, objLocator, objService, objRootFolder som är objFile, objFolder
Fastställd objFileSystem = CreateObject (”Scripting.FileSystemObject”)
Fastställd objLocator = CreateObject (”WbemScripting.SWbemLocator”)
Fastställd objService = objLocator.ConnectServer (”. ” ”rotar/cimv2”)
Fastställd objRootFolder = objFileSystem.GetFolder (FS_TREE_ROOT)
För varje som är objFile i objRootFolder.Files
ResetInheritance objFile.Path, ENABLE_INHERITANCE
Därefter
Fastställdt objFile = ingenting
För varje objFolder i objRootFolder.SubFolders
DoWorkOnFolders objFolder.Path
Därefter
Fastställd objFolder = ingenting
Fastställd objRootFolder = ingenting
Fastställd objService = ingenting
Fastställd objLocator = ingenting
Fastställd objFileSystem = ingenting
|