Дать пользователю права на каталог (NTFS) из скрипта - VB
Формулировка задачи:
Так как же дать определенному пользователю права на запись в определенный каталог из скрипта (VBScript или JScript), то что надо использовать WMI - я примерно понял, но как...
Желательно с примером
Решение задачи: «Дать пользователю права на каталог (NTFS) из скрипта»
textual
Листинг программы
Option Explicit Public Function SetPermission(strUserName, strDomainName, strPath) dim objService dim objLocator dim objUserTrustee Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer ("", "root/cimv2") 'Retrieve user's Trustee dim objWMIService dim colItems dim item dim objFSO Set objWMIService = GetObject("winmgmts:\. ootcimv2") Set colItems = objWMIService.ExecQuery ("Select * from Win32_Account Where Name = '" & strUserName & "' and Domain = '" & strDomainName & "'") If colItems.count = 1 Then For Each item in colItems set objUserTrustee = item Next End If Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strPath) Then SetPermissionToFolder objService,strPath,objUserTrustee End If End Function Private Function SetPermissionToFolder(byref Service,strPath,byRef UserTrustee) 'Declares main variables dim UserHasPermission dim NewDACL() ' Init data UserHasPermission = false redim NewDACL(0) 'Retrieve security descriptor for the folder dim wmiFileSecSetting dim OldSD dim retVal dim DACL dim wmiAce dim Trustee dim i dim NewSD i=0 Set wmiFileSecSetting = GetObject("winmgmts:Win32_LogicalFileSecuritySetting.path='" & strPath & "'") retVal = wmiFileSecSetting.GetSecurityDescriptor(OldSD) ' Retrieve the DACL array of Win32_ACE objects. DACL = OldSD.DACL For each wmiAce in DACL ' Get Win32_Trustee object from ACE Set Trustee = wmiAce.Trustee If (Trustee.SIDString = UserTrustee.SID) Then ConfigureACE wmiAce UserHasPermission = true End If redim preserve NewDACL(i) set NewDACL(i) = wmiAce i = i + 1 Next If not UserHasPermission Then dim newACE set newACE = Service.Get("Win32_Ace").Spawninstance_() newACE.Trustee = UserTrustee ConfigureACE newACE i = ubound(NewDACL)+1 redim preserve NewDACL(i) set NewDACL(i) = newACE End If OldSD.DACL = NewDACL retVal = wmiFileSecSetting.SetSecurityDescriptor(OldSD) End Function Private Sub ConfigureACE (byref wmiAce) wmiAce.AccessMask = 2032127' Full control wmiAce.AceType = 0' ALLOW wmiAce.AceFlags = 3' OBJECT_INHERIT_ACE + CONTAINER_INHERIT_ACE End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д