使用GP Extension处理组策略

时间:2017-05-24 23:29:33

标签: c windows group-policy

我创建了一个实现ProcessGroupPolicyEx的组策略扩展。 当我收到团体政策时,我会被通知。

但是,我对如何从GPO内部阅读政策感到茫然。 example在循环遍历GPO时停止:

 for( pCurGPO = pChangedGPOList; pCurGPO; pCurGPO = pCurGPO->pNext )
   {
       if( *pbAbort )
       {
           // Abort.
           break;
       }
       // ...
   }

没关系,但我如何获得pCurGPO中的策略(实际设置)?我需要获取此GPO包含的设置,或者存储它们的注册表项。这是因为我创建了多个针对我的扩展的ADMX模板,所以我需要区分它们。

到目前为止,我已经找到了一些示例,但他们认为扩展程序事先知道哪些注册表会被更改。但是,在我的情况下,我不希望扩展程序做出这个假设,我希望它检查更新的GPO并确切地确定要更改的内容。

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:1)

因此,在通过Chromium代码(根据amritanshu评论)之后,我找到了一种似乎有用的方法,但是我还没有理解可能有哪些例外(如果有的话):

  1. 获取pCurObj的lpFileSysPath字段,该字段将是UNC路径。
  2. 追加" \ Registry.pol"走在路上。
  3. 读取并解析生成的文件,该文件将是一个PReg文件。
  4. 这里记录了PReg文件: https://msdn.microsoft.com/en-us/library/aa374407(v=vs.85).aspx

    如果有人发现此方法有任何问题,或者知道此算法的任何例外情况,请告知我们。

    编辑: 还发现这个博客有更好的书面形式,但有类似的解释:https://redsigil.weebly.com/home/group-policy-callbacks-the-missing-documentation