使用GP Extension处理组策略

Wil*_* Am 8 c windows group-policy

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

然而,我对如何从GPO内部阅读政策感到茫然.该示例在循环遍历GPO时停止:

 for( pCurGPO = pChangedGPOList; pCurGPO; pCurGPO = pCurGPO->pNext )
   {
       if( *pbAbort )
       {
           // Abort.
           break;
       }
       // ...
   }
Run Code Online (Sandbox Code Playgroud)

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

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

任何指针都将非常感激.

Wil*_* Am 1

因此,在浏览 Chromium 代码(根据 amritanshu 评论)之后,我找到了一种似乎有效的方法,但我还不明白可能存在哪些异常(如果有的话):

  1. 获取 pCurObj 的 lpFileSysPath 字段,该字段将是 UNC 路径。
  2. 将“\Registry.pol”附加到路径。
  3. 读取并解析生成的文件,该文件将是一个 PReg 文件。

PReg 文件记录如下: https://msdn.microsoft.com/en-us/library/aa374407(v= vs.85).aspx

如果有人发现这种方法有任何问题,或者知道该算法有任何例外,请告诉我。

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