好的,所以我们需要创建一个允许我们的用户只使用特定程序的 GPO。
邮政总局地点:
- 用户配置
- 政策
- 管理模板 [...]
- 系统
- 仅运行指定的 Windows 应用程序
- 系统
- 管理模板 [...]
- 政策
然后将 GPO 设置为启用并单击允许的应用程序列表 --> 显示...
我创建了一个 Excel 电子表格,其中包含所有程序的名称及其关联的可执行文件以及其他相关信息,以便我们可以轻松地组织、添加、删除等我们需要允许用户访问的可执行文件。
然后,此电子表格将所有可执行文件转储到文本文件中。
以下是文本文件的示例:
Acrobat.exe
chrome.exe
calc.exe
.
.
.
有很多条目,这些可能会发生变化。我要做的是创建一个脚本,该脚本将采用该文本文件并自动填充 GPO。我不在乎我们是否必须打开窗口然后运行它,它不需要从任务调度程序运行(尽管如果有人准备好该代码,那将是惊人的)。我们只需要它来将这些荒谬的可执行文件名填充到字段中。
这是我发现的代码(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