Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Задание прав группе Everyone

Ответить
Настройки темы
VBS/WSH/JS - Задание прав группе Everyone

Старожил


Сообщения: 203
Благодарности: 3

Профиль | Отправить PM | Цитировать


Можно ли данный скрипт подружить с группой Everyone домена ?

Код: Выделить весь код
Option Explicit
Dim objWMI, strDomain, strComputer, dicNTFS, dicShare

Const FILE_SHARE          = 0
Const MAXIMUM_CONNECTIONS = 15

Const PERM_READ           = 1179817
Const PERM_MODIFY         = 1245631
Const PERM_FULL           = 2032127
Const DOMAIN_NAME         = "DOMAIN"

Set dicNTFS  = CreateObject("Scripting.Dictionary")
Set dicShare = CreateObject("Scripting.Dictionary")

dicNTFS.CompareMode  = vbTextCompare
dicShare.CompareMode = vbTextCompare

' Тут добавляем группы для NTFS прав

dicNTFS.Add  "Group_01", PERM_READ
dicNTFS.Add  "Group_02", PERM_READ

' Тут добавляем группы для прав на шару

dicShare.Add "Group_01", PERM_FULL
dicShare.Add "Group_02", PERM_FULL

' Тут вызываем функцию создания шары

CreateRemoteShare "Computer_01", "C:\TEST", "TEST", "Only Testing", dicShare, dicNTFS

' Функция создания шары

Sub CreateRemoteShare (strComp, strFolder, strShare, strInfo, dicSHARE, dicNTFS)
   Dim objSecDesc, objTrustee, objACE, objWMI
   Dim arrKeys, int, arrACE()
   Dim objShare, objInParam, objFolderSec, intRet

   Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComp & "\root\cimv2")
   Set objFolderSec = objWMI.Get("Win32_LogicalFileSecuritySetting='" & strFolder & "'")
   intRet = objFolderSec.GetSecurityDescriptor(objSecDesc)

   arrKeys = dicNTFS.Keys
   ReDim arrACE(dicNTFS.Count)

   For int=0 To dicNTFS.Count-1
      Set objTrustee  = GetGroupTrustee(DOMAIN_NAME, arrKeys(int))
      Set arrACE(int) = objWMI.Get("Win32_Ace").SpawnInstance_

      arrACE(int).Properties_.Item("AccessMask") = dicNTFS.Item(arrKeys(int))
      arrACE(int).Properties_.Item("AceFlags")   = 3
      arrACE(int).Properties_.Item("AceType")    = 0
      arrACE(int).Properties_.Item("Trustee")    = objTrustee
   Next

   objSecDesc.Properties_.Item("DACL") = arrACE
   intRet = objFolderSec.SetSecurityDescriptor(objSecDesc)
   Set objSecDesc = objWMI.Get("Win32_SecurityDescriptor").SpawnInstance_()

   arrKeys = dicSHARE.Keys
   ReDim arrACE(dicSHARE.Count)

   For int=0 To dicSHARE.Count-1
      Set objTrustee  = GetGroupTrustee(DOMAIN_NAME, arrKeys(int))
      Set arrACE(int) = objWMI.Get("Win32_Ace").SpawnInstance_

      arrACE(int).Properties_.Item("AccessMask") = dicSHARE.Item(arrKeys(int))
      arrACE(int).Properties_.Item("ACEFlags")   = 3
      arrACE(int).Properties_.Item("AceType")    = 0
      arrACE(int).Properties_.Item("Trustee")    = objTrustee
   Next

   objSecDesc.Properties_.Item("DACL") = arrACE

   Set objShare   = objWMI.Get("Win32_Share")
   Set objInParam = objShare.Methods_("Create").InParameters.SpawnInstance_()

   objInParam.Properties_.Item("Access")         = objSecDesc
   objInParam.Properties_.Item("Description")    = strInfo
   objInParam.Properties_.Item("Name")           = strShare
   objInParam.Properties_.Item("Path")           = strFolder
   objInParam.Properties_.Item("MaximumAllowed") = MAXIMUM_CONNECTIONS
   objInParam.Properties_.Item("Type")           = 0

   objShare.ExecMethod_ "Create", objInParam
End Sub

' Функция получения объекта опекуна

Function GetGroupTrustee(strDomain, strName)
   Dim objTrustee, objAccount, objSID, objWMI
   Set objWMI = GetObject("winmgmts:\\.\root\cimv2")

   Set objTrustee = objWMI.Get("Win32_Trustee").Spawninstance_
   Set objAccount = objWMI.Get("Win32_Group.Name='" & strName & "',Domain='" & DOMAIN_NAME &"'")
   Set objSID     = objWMI.Get("Win32_SID.SID='" & objAccount.SID &"'")

   objTrustee.Domain = strDomain
   objTrustee.Name   = strName
   objTrustee.Properties_.Item("SID") = objSID.BinaryRepresentation

   Set GetGroupTrustee = objTrustee
End Function
Ошибка в том что не находит данную группу, жалуясь на строке

set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Group.Name='" & strName & "',Domain='" & strDomain &"'")

С другими группами проблем нет.

Отправлено: 15:03, 16-10-2014

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Задание прав группе Everyone

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Задание планировщика mxm199 Microsoft Windows NT/2000/2003 4 25-04-2013 15:49
Прочее - [решено] разграничение прав в рабочей группе laro4ka Сетевые технологии 5 30-07-2008 16:57
C/C++ - Задание внутри Wurka86 Программирование и базы данных 1 25-05-2008 22:18
[решено] Задание прав доступ к шарам в XP makaveli lcf Microsoft Windows 2000/XP 2 20-10-2005 10:43




 
Переход