通过程序实现组策略的备份

组策略编辑器是系统个性化的一个常用的方式。但是它没有提供备份手段,导致我们在换新机器或重装系统的时候,需要重新手动配置,如果修改的策略比较多的时候是一件比较麻烦的事情。

组策略本身的数据还是存储在注册表中,理论上我们只需要获取组策略编辑器对注册表的修改,然后通过程序实现同样的注册表修改行为,即可实现组策略的备份。周末的时候按照这个思路研究了下如何自己写程序实现组策略的编辑。

监控组策略的行为

组策略的启动方式是"gpedit.msc",但他实际上的进程是mmc.exe,我们可以通过ProcessMonotor监控其对注册表的修改方法,具体可以参考这篇文章:

如何查看组策略对象修改的注册表设置

后来发现了一个更加小巧好用的程序:RegFromApp,它可以更方便快速mmc.exe对注册表的修改。一个基本的示例如下。

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group?Policy?Objects\{48914450-7595-411C-AFD3-AE2A07C8500C}User\Software\Policies\Microsoft\PreviousVersions]
"DisableLocalPage"=dword:00000001
"DisableRemotePage"=dword:00000001
"HideBackupEntries"=dword:00000001

组策略相关API

监控到了组策略的行为后,第一反应是通过注册表API实现同样的操作,从而实现组策略的备份。但是实际使用中会发现,直接构造这样的注册表键值是不行的,原因在于它的路径是一个动态的。

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48914450-7595-411C-AFD3-AE2A07C8500C}User\Software\Policies\Microsoft\PreviousVersions]

其中高亮的部分是动态的,每次组策略编辑的时候是不一样的。网上也有帖子讨论这一问题:https://bbs.csdn.net/topics/70402935

要打开这个动态注册表键值,需要用到IGroupPolicyObject相关的Windows API,网上也有相关的示例:http://delphi.longzu.net/viewthread.php?tid=49579&extra=page%3D2,也有不少c#版的封装。

我这里取得是GitHub的一个开源项目priv10的封装,它里面的工程LocalPolicy就是对相关接口的封装

代码示例

一个简单的示例如下:

var?po??=?new?ComputerGroupPolicyObject();
var?key?=?po.GetRootRegistryKey(GroupPolicySection.User)
????????????.OpenSubKey(@"Software\Policies\Microsoft\PreviousVersions");
key.SetValue("DisableRemotePage",?0);
po.Save();

上面的例子演示了如何打开这个动态的注册表,然后就是普通的注册表操作了。操作完成后,需要调用Save写入策略。

另外,需要注意的是,组策略相关的API是要求在STA线程下才能使用的,如果我们的主程序是MTA的,可以新建一个STA的线程,在STA线程中执行相关API:

Thread?thread?=?new?Thread(EditPolicy);thread.SetApartmentState(ApartmentState.STA);thread.Start();

原文地址:https://www.cnblogs.com/TianFang/p/12046583.html

时间: 2024-07-31 05:38:07

通过程序实现组策略的备份的相关文章

Powershell脚本配合计划任务程序实现组策略自动备份

同样是在今天遇到了一个题目,要求每五分钟自动备份一次组策略(GPO),绞尽脑汁发现图形界面并不能解决这个问题,于是开始想Powershell能不能解决,最后真的解决了.下面是我做的过程 首先放脚本: 解释一下: 导入grouppolicy这个模块,后边要用它的方法 定义一个时间变量,每天的备份都会记录在一个以日期命名的文件夹 指定在C盘下某目录新建文件夹 然后指定备份所有组策略到该文件夹 保存并运行: 成功备份,开心 接下来才是重头戏: 打开任务计划程序,点击创建任务(注意是创建任务而不是创建基

360产品无法安装,此程序被组策略阻止

打开安全组策略 gpedit.msc 本地计算机  策略.Windows设置展开.安全设置展开.软件限制策略.删掉右边带有360的内容,可以装了

创建组策略,防止误点程序

描述: 目标目录开启了可执行文件运行权限. 1.恶意攻击者可以在该目录下执行恶意文件或程序. 2. 目录开启可执行文件运行权限是IIS服务器所特有的一种情况.该目录下的可执行文件(.EXE..DLL..BAT)等后缀的文件可以通过WEB接口调用运行,这有可能会导致恶意攻击者通过执行后门程序来达到完全控制服务器的目的. 危害: 1.被恶意攻击执行恶意程序控制服务器. 2. 对不需要可执行权限的目录开放可执行权限将导致恶意攻击者有可能利用目录中某些可执行文件执行恶意行为,从而获取进一步的信息或导致直

实验四十八微软应用程序虚拟化之三APP-V 5.1 Client部署和通过组策略自定义配置

实验四十八微软应用程序虚拟化之三APP-V 5.1Client部署和通过组策略自定义配置 APP-V  Client分为Application Virtualization Desktop Client和 Application Virtualization Client for Remote Desktop Services,两者都为虚拟化应用程序提供并管理虚拟环境,管理到缓存的程序包传输.发布刷新.传输,以及与 Application Virtualization Server的所有交互.

View结合组策略进行应用程序下发

一.前言 当做完虚拟桌面后,就需要我们给终端用户安装程序了,尽管我们可以将程序安装在模板机里在创建Replica,但是后期的软件升级和新装其他软件如果使用Recompose会让人很头疼,于是我们就可以利用组策略的方式来下发程序. 二.准备工作 使用组策略需要软件是msi格式,我们可以利用vmware的thinapp来封装,找一台干净的XP或者Win7 VM,安装Thinapp,然后对该vm创建快照,同时在域中创建一个共享文件夹,要求domain user对其有读取权限. 三.操作步骤 1.在VM

[精讲17] 组策略

组策略 1-本地策略 每一个Windows系统中,都存在一个本地策略,而从Windows Server 2008开始,本地组策略就支持针对于不同的用户设置不同的策略. mmc-组策略对象的编辑器-用户-选择不同的用户 2-GPMC GPMC是Windows中,主要的组策略管理工具,管理员使用GPMC便可以轻松管理组策略,同时,管理员还可以在Windows 7系统上安装GPMC. 如果要在win7客户端上安装GPMC的话,需要下载补丁KB958830,安装好补丁后,需要在功能当中启用'组策略管理工

【AD】实用组策略/脚本集合 (重大更新20160627)

文章原始出处 http://blog.51cto.com/xifanliang/1793576 http://bbs.51cto.com/thread-1170777-1.html 作者:xifalniang 关于组策略的恢复部分. 非首选项的组策略恢复为未配置即可: 首选项的组策略需勾选"不在应用此项目时删除它": 脚本必须通过手动反向操作,此次更新会提供所有脚本的反向操作. 以下组策略测试环境 DC为Win2012R2,客户端为Win7,XPSP3.其他系统未经过充分测试.应用前请

组策略首选项

组策略首选项是 Windows Server 2008 操作系统中的新增功能,包括 20 多个新的组策略扩展,扩大了组策略对象 (GPO) 中可配置设置的范围.这些新的扩展位于组策略管理控制台 (GPMC) 的"组策略管理编辑器"窗口中的新首选项下面.新组策略首选项扩展的示例包括文件夹选项.映射驱动器.打印机.计划任务.服务以及「开始」菜单设置. 组策略首选项可以通过项目级别的目标和操作模式提供更好的目标.此外,丰富的用户界面和标准的 XML 配置可在您管理 GPO 时为您提供对托管计

Windows server 2008 域控器上配置自动锁屏组策略

打开管理工具----组策略管理 新建一条组策略,重命名为"自动锁屏" 然后右键编辑"自动锁屏"这条策略 需要启用下图中的三条设置,其中一条"屏幕保护程序超时"可以设置时间,默认是900秒,也就是15分钟,可以自己更改的. 再将"自动锁屏"策略下发到各个组织单元上.例如下图就是把策略分发到123 这个OU上. 如果没有合适组织单元,可以打开Active Directory 用户和计算机中,自己新建OU. 然后将相应要自动锁屏的域