2015-06-04 4 views
0

Итак, нам нужно создать объект групповой политики, который позволяет нашим пользователям использовать только определенные программы.Заполнение GPO из текстового файла с помощью VBScript или другого

GPO Адрес:

  • Конфигурация пользователя
    • Политика
      • Административные шаблоны [...]
        • Система
          • Выполнить только указанные приложения для Windows

Затем установка GPO к включен и нажав на кнопку Список разрешенных приложений -> Показать ...

Я создал таблицу Excel, содержащий имена всех программ и связанных с ними исполняемых файлов с другой соответствующей информацией, чтобы мы могли легко организовывать, добавлять, удалять и т. д. исполняемые файлы, которые мы должны разрешать нашим пользователям.

Затем эта таблица сбрасывает все исполняемые файлы в текстовый файл.

Вот пример того, что текстовый файл выглядит следующим образом:

Acrobat.exe 
chrome.exe 
calc.exe 

. 
. 
. 

Есть много записей, и они, вероятно, могут быть изменены. То, что я пытаюсь сделать, это создать скрипт, который будет принимать этот текстовый файл и автоматически заполнить объект групповой политики. Мне все равно, нужно ли открывать окно, а затем запускать его, его не нужно запускать из планировщика задач (хотя это было бы удивительно, если бы у кого-то был этот код готов). Нам просто нужно заполнить это смехотворное количество исполняемых имен файлов в полях.

Вот код, который я нашел (VBScript), который при запуске должен заполнять поля автоматически, однако я не могу заставить его работать в редакторе управления групповыми политиками (вместо этого он запускается в окне проводника Windows и заканчивается поиском некоторых файлов)

' Open the text file, located in the same path as the script 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
strPath = Mid(Wscript.ScriptFullName, 1, InStrRev(Wscript.ScriptFullName, wscript.ScriptName) -1) 
Set objFile = objFSO.OpenTextFile(strPath & "appList.txt") 

' Activate the "Show Contents" window with the "List of allowed applications". 
' Note the window must be opened already and we should have selected where in 
' the list we want to enter the data before running the script 
set WshShell = WScript.CreateObject("WScript.Shell") 
WScript.Sleep 1000 
WshShell.AppActivate "Show Contents" 

' Read the file line by line 
Do While objFile.AtEndOfStream <> True 

    ' Each line contains one EXE name 
    exeName = objFile.ReadLine 

    ' Escape forbidden chars { } [ ] () +^% ~ 
    exeName = Replace(exeName, "[", "{[}") 
    exeName = Replace(exeName, "]", "{]}") 
    exeName = Replace(exeName, "(", "{(}") 
    exeName = Replace(exeName, ")", "{)}") 
    exeName = Replace(exeName, "+", "{+}") 
    exeName = Replace(exeName, "^", "{^}") 
    exeName = Replace(exeName, "%", "{%}") 
    exeName = Replace(exeName, "~", "{~}") 

    ' Send the EXE name to the window 
    WScript.Sleep 100 
    WshShell.SendKeys exeName 

    ' Move to the next one 
    WshShell.SendKeys "{TAB}"  

Loop 

objFile.Close 

от: http://blogs.msdn.com/b/alejacma/archive/2011/03/24/how-to-update-quot-run-only-specified-windows-applications-quot-gpo-programmatically-vbscript.aspx

+0

[Соответствует] (http://serverfault.com/q/434365). –

ответ

0

Хорошо, поэтому я попробовал много разных способов. Если кто-то ищет ответ, чтобы сделать это, я так понял, и я решил продолжить. Я отправлю все соответствующие коды ниже.

В Excel, формат моей таблицы выглядит следующим образом: enter image description here (с явно WAY больше записей)

Вот код VBA Я использовал, чтобы включить данные из этого файла в нужный формат для ключа реестра:

VBA - в Excel

Public Sub ExportToTextFile(FName As String, _ 
    Sep As String, SelectionOnly As Boolean, _ 
    AppendData As Boolean) 
    Dim WholeLine As String 
    Dim FNum As Integer 
    Dim RowNdx As Long 
    Dim ColNdx As Integer 
    Dim StartRow As Long 
    Dim EndRow As Long 
    Dim StartCol As Integer 
    Dim EndCol As Integer 
    Dim CellValue As String 

    Application.ScreenUpdating = False 
On Error GoTo EndMacro: 
    FNum = FreeFile 
    StartRow = 2 
    If SelectionOnly = True Then 
     With Selection 
      StartCol = .Cells(2).Column 
      EndRow = .Cells(.Cells.Count).Row 
      EndCol = .Cells(2).Column 
     End With 
    Else 
     With ActiveSheet.UsedRange 
      StartCol = .Cells(2).Column 
      EndRow = .Cells(.Cells.Count).Row 
      EndCol = .Cells(2).Column 
     End With 

    End If 
    If AppendData = True Then 
     Open FName For Append Access Write As #FNum 
    Else 
     Open FName For Output Access Write As #FNum 
    End If 
    For RowNdx = StartRow To EndRow 
     WholeLine = "" 
     For ColNdx = StartCol To EndCol 
      If Cells(RowNdx, ColNdx).Value = "" Then 
       CellValue = "" 
      Else 
       CellValue = Cells(RowNdx, ColNdx).Value 
      End If 
      WholeLine = WholeLine & Chr(34) & CellValue & ".exe" & Chr(34) & "=" & Chr(34) & CellValue & ".exe" & Chr(34) & Sep 
     Next ColNdx 
     WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep)) 
     Print #FNum, WholeLine; "" 

    Next RowNdx 

EndMacro: 
    On Error GoTo 0 
    Application.ScreenUpdating = True 
    Close #FNum 
End Sub 
Sub PipeExport() 
    Dim FileName As Variant 
    Dim Sep As String 

    FileName = Application.GetSaveAsFilename(InitialFileName:="appList", filefilter:="Text (*.txt),*.txt") 
    If FileName = False Then 
     '''''''''''''''''''''''''' 
     ' user cancelled, get out 
     '''''''''''''''''''''''''' 
     Exit Sub 
    End If 
    Sep = "|" 
    If Sep = vbNullString Then 
     '''''''''''''''''''''''''' 
     ' user cancelled, get out 
     '''''''''''''''''''''''''' 
     Exit Sub 
    End If 
    Debug.Print "FileName: " & FileName, "Extension: " & Sep 
    ExportToTextFile FName:=CStr(FileName), Sep:=CStr(Sep), _ 
    SelectionOnly:=False, AppendData:=False 

End Sub 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    PipeExport 
End Sub 

Файл, который создается в appList.txt и его формат тот же формат, как ключ реестра:

"Acrobat.exe"="Acrobat.exe" 
"AcroRd32.exe"="AcroRd32.exe" 

Теперь в вашем GPO, добавить уникальное имя программы в список разрешенных приложений (например test1234 .exe), а в редакторе реестра выберите «Редактирование»> «Найти» test1234.exe. Экспортируйте этот раздел реестра в Файл> Экспорт. Удалите строку test1234.exe и вставьте в свой текстовый файл. Затем переиздайте этот файл, и все готово!

0
"C:\Windows\System32\GroupPolicy\User\Registry.pol" 

где моя политика сохраняются. Это полу-текстовый файл. Попробуйте написать в этот файл.

Смежные вопросы