利用组策略API 编辑GPO(Group Policy Object)

用windows自带的GPO Editor编辑修改,然后利用注册表监控器regFromApp监视注册表的改动,就知道某个策略修改了注册表的哪个字段了。

下面是禁止U盘访问的例子:

 1 #include <gpedit.h>
 2 #include <windows.h>
 3 #include <objbase.h>
 4 #include <comdef.h>
 5 #include <sstream>
 6 #include <iostream>
 7
 8 int main()
 9 {
10     DWORD val, val_size = sizeof(DWORD);
11     HRESULT hr;
12     IGroupPolicyObject* pLGPO;
13     HKEY machine_key, dsrkey;
14     // MSVC is finicky about these ones => redefine them
15     const IID my_IID_IGroupPolicyObject =
16     { 0xea502723, 0xa23d, 0x11d1, { 0xa7, 0xd3, 0x0, 0x0, 0xf8, 0x75, 0x71, 0xe3 } };
17     const IID my_CLSID_GroupPolicyObject =
18     { 0xea502722, 0xa23d, 0x11d1, { 0xa7, 0xd3, 0x0, 0x0, 0xf8, 0x75, 0x71, 0xe3 } };
19     GUID ext_guid = REGISTRY_EXTENSION_GUID;
20     // This next one can be any GUID you want
21     GUID snap_guid = { 0x3d271cfc, 0x2bc6, 0x4ac2, { 0xb6, 0x33, 0x3b, 0xdf, 0xf5, 0xbd, 0xab, 0x2a } };
22
23     // Create an instance of the IGroupPolicyObject class
24     hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
25     if (FAILED(hr))
26     {
27         std::ostringstream errorStream;
28         errorStream << "Failed to initialize COM library. Error code = 0x" << std::hex << hr << std::endl;
29         std::cout << errorStream.str() << std::endl;
30         return 0;
31     }
32
33     hr = CoCreateInstance(my_CLSID_GroupPolicyObject, NULL, CLSCTX_INPROC_SERVER,
34         my_IID_IGroupPolicyObject, (LPVOID*)&pLGPO);
35
36     // We need the machine LGPO (if C++, no need to go through the lpVtbl table)
37     pLGPO->OpenLocalMachineGPO(GPO_OPEN_LOAD_REGISTRY);
38     pLGPO->GetRegistryKey(GPO_SECTION_MACHINE, &machine_key);
39
40     // The disable System Restore is a DWORD value of Policies\Microsoft\Windows\DeviceInstall\Settings
41     RegCreateKeyEx(machine_key, "SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstall\\Restrictions",
42         0, NULL, 0, KEY_SET_VALUE | KEY_QUERY_VALUE, NULL, &dsrkey, NULL);
43
44     // Create the value
45     val = 1;
46     RegSetKeyValue(dsrkey, NULL, "DenyRemovableDevices", REG_DWORD, &val, sizeof(val));
47     RegCloseKey(dsrkey);
48
49     // Apply policy and free resources
50     pLGPO->Save(TRUE, TRUE, &ext_guid, &snap_guid);
51     RegCloseKey(machine_key);
52     pLGPO->Release();
53     return 0;
54 }

rereferences:

http://pete.akeo.ie/2011/03/porgramatically-setting-and-applying.html

http://www.nirsoft.net/utils/reg_file_from_application.html

http://blog.sina.com.cn/s/blog_4e0987310101irm8.html

时间: 2024-12-26 20:22:07

利用组策略API 编辑GPO(Group Policy Object)的相关文章

利用组策略提升域用户安装exe布置的软件

背景: 利用组策略安装软件有两个格式,分别是MSI和EXE. msi:部署MSI软件是不需要用管理员的权限进行安装的,但是MSI的软件凤毛麟角,都要自己通过封装来把EXE重新打包MSI. exe:部署exe通过写简单的zap脚本来部署,但是有些软件是需要管理员的权限来安装的.所以导致很多exe安装的软件还是需要管理员来安装. 为了解决这个方法,可以利用组策略来提升权限来安装部署的exe软件. 1,在相关的组建立GPO. 2,编辑GPO,打开计算机配置-策略-管理模板-windows组件-wind

利用组策略分发软件

如何在网络环境下实现软件的统一安装,这是一个在网络管理中经常遇到的棘手问题,而通过组策略可以轻松解决这个问题.实现软件的统一安装与部署是组策略提供的强大功能,其缺点是通过组策略只能分发以MSI为扩展名的安装程序包 实验环境:两台原始干净的虚拟机,一台安装域控服务器,另一台作为客户机,并且要加入域.域控服务器的IP地址为:192.168.15.7客户机的IP地址为:192.168.15.5 首选dns为192.168.15.7在DC上创建的域为17w2.com准备一个软件安装包实验目的:利用组策略

域环境下利用组策略实现统一管理

域环境下利用组策略实现统一管理 1)   组策略配置 准备工作: 域控---新建---组织单位 Network 添加账户hansongwei 新建组策略对象 注:win 2003与win 2008 的区别 Win 2003[管理工具][Directory Active 用户和计算机]选择整个域或者某个组织单位,右键单击,[属性]---[组策略] Win2008  [管理工具][组策略管理] 本实例以win 2003为例 新建---组策略对象 networkGPO 编辑 networkGPO 做相

Group Policy Object Editor

Group Policy Object Editor The Group Policy Object Editor is a tool that hosts MMC extension snap-ins that manage policy settings. All functionality is provided by extension snap-ins. Administrators manage policy settings using the Group Policy Objec

利用组策略对于进行管理(限制软件运行)

域组策略是通过它可以对域中所有的与部分指定的计算机或域用户进行统一管理. 实验要求:要求人事部的成员不能访问记事本. 禁止技术部的人访问画图. 准备实验:准备两台虚拟机,一台虚拟机安装DC和DNS,另一台虚拟机作为客户端进行验证,并且两台虚拟机要求在同一个网段,要确保客户端已经加入了域中. 开始实验:首先在DC上新建两个组织单位,一个叫技术部,一个叫人事部. 点击 开始→管理工具→Active Directory用户和计算机,在Users中新建两个组织单位. 在人事部中新建一个叫zhangsan

利用组策略更改本地账户密码

所有用户加入域后,采用域账户,将用户原来使用的administrator 统一更改密码,防止用户自己继续使用administrator账户. windows 2008R2 组策略 新增了首先项功能,丰富了组策略功能,许多原来需要脚本执行的策略,可以直接利用首先项执行.注:xp系统需安装KB943729.exe补丁使用组策略--计算机策略. 只能在以下计算机上 GPMC 的"组策略管理编辑器"窗口中的"用户或计算机配置"下的新"首选项"文件夹中配置

组策略配置Powershell的Excution Policy

Powershell有自身的安全机制,默认的情况下,Powershell的执行策略是受限的,也就是Restricted,我们想要执行脚本必须先调整这个执行策略,在计算机上以管理员模式打开Powershell,然后输入Set-ExcutionPolicy命令,后面接想要设置的执行策略,Powershell的执行策略有Restricted,Allsigned,RemoteSigned,Unrestricted,Bypass这5种模式,具体的策略大家可以百度学习.今天要介绍的是,如何通过组策略对用户的

组策略

注册表是Windows系统中保存系统软件和应用软件配置的数据库,而 随着Windows功能越来越丰富,注册表里的配置项目也越来越多,很多配置都可以自定义设置,但这些配置分布在注册表的各个角落,如果是手工配置,可以想像是多么困难和烦杂.而组策略则将系统重要的配置功能汇集成各种配置模块,供用户直接使用,从而达到方便管理计算机的目的. 其实简单地说,组策略设置就是在修改注册表中的配置.当然,组策略使用了更完善的管理组织方法,可以对各种对象中的设置进行管理和配置,远比手工修改注册表方便.灵活,功能也更加

使用组策略首选项进行扩展控制

使用组策略首选项进行扩展控制 2010-12-15 15:30 Derek Melber TechNet中文网 字号:T | T 在 Windows Server 2008 和 Windows Vista 引入的诸多新技术中,最引人注目的当属“组策略首选项”(GPP),它现在可以极大地扩展管理员对组策略的操作.在组策略对象 (GPO) 中,组策略首选项在 22 个不同区域提供了 3,000 余种设置,另外还包括设置驱动器和打印机映射及控制本地组成员等. AD:51CTO网+ 首届中国APP创新评