c - Behandling af gruppepolitik med GP Extension

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har oprettet en gruppeudvidelsesudvidelse, der implementerer ProcessGroupPolicyEx.
Jeg bliver sucessfully anmeldt når jeg modtager en gruppepolitik.


Jeg er dog tabt for, hvordan man læser politikken inde fra GPO. Eksemplet stopper ved looping gennem GPO'er: [2]


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


Det er fint, men hvordan får jeg politikken (de faktiske indstillinger) i pCurGPO? Jeg skal enten få de indstillinger, som denne GPO indeholder, eller registreringsnøglen, hvor den gemmer dem. Dette skyldes, at jeg har oprettet flere ADMX-skabeloner, der målretter mit udvidelse, så jeg skal fortælle dem fra hinanden.


Hidtil har jeg fundet nogle prøver, men de antager, at udvidelsen ved, hvilke registre der vil blive ændret på forhånd. Men i mit tilfælde ønsker jeg ikke, at udvidelsen skal tage denne antagelse, jeg vil have den til at kontrollere den opdaterede GPO og bestemme præcis, hvad der bliver ændret.


Enhver pointer ville blive meget værdsat.

Bedste reference


Så efter at jeg havde skruet igennem kromkoden (pr. Amritanshu-kommentar) fandt jeg en måde, der synes at fungere, men jeg forstår endnu ikke, hvilke undtagelser der måtte være (hvis nogen):



  1. hent lpFileSysPath-feltet i pCurObj, som vil være en UNC-sti.

  2. Tilføj '\ Registry.pol' til stien.

  3. Læs og analyser den resulterende fil, som vil være en PReg-fil.



PReg-filen er dokumenteret her:
https://msdn.microsoft.com/en-us/library/aa374407(v=vs.85).aspx[3]


Hvis nogen ser noget galt med denne tilgang eller ved nogen undtagelser for denne algoritme, så lad mig det vide.


REDIGERE:
Også fundet denne blog med en bedre skrevet, men lignende forklaring: https://redsigil.weebly.com/home/group-policy-callbacks-themissing-documentation[4]