API Reference
EffectivePolicyBatchService
Computes effective registry policy values for a set of (Key, ValueName) and, from the same applicability-ordered GPO list, returns attribution (winner + full writer chain). One pass per DN/scope; reusable across features (SMB/NTLM, Time, Defender, etc.).
Inheritance
- Object
- EffectivePolicyBatchService
Methods
public static Void AddKeyHints(params String[] prefixes) #VoidAdds key-prefix hints (HKLM\...) to limit writer-index building to relevant families.
Parameters
- prefixes System.String[]
public static Void ClearCache() #VoidClears the internal applicability cache (unit tests or callers can invalidate when needed).
public static IReadOnlyList<Row> GetForDn(String domainName, String distinguishedName, RegistryPolicyScope scope, Boolean includeSites, IEnumerable<String> siteNames, IEnumerable<ValueTuple<String, String, Func<Row, String>>> items) #IReadOnlyList<Row>Batch resolution for an arbitrary DN/scope with optional Sites.
Parameters
- domainName System.String
- distinguishedName System.String
- scope ADPlayground.Gpo.Policy.RegistryPolicyScope
- includeSites System.Boolean
- siteNames System.Collections.Generic.IEnumerable{System.String}
- items System.Collections.Generic.IEnumerable{System.ValueTuple{System.String,System.String,System.Func{ADPlayground.Gpo.Policy.EffectivePolicyBatchService.Row,System.String}}}
GetForDnWithContext(System.String arg1, System.String arg2, ADPlayground.Gpo.Policy.RegistryPolicyScope arg3, System.Boolean arg4, System.Collections.Generic.IEnumerable{System.String} arg5, System.Boolean arg6, System.Boolean arg7, System.Collections.Generic.IEnumerable{System.ValueTuple{System.String,System.String,System.Func{ADPlayground.Gpo.Policy.EffectivePolicyBatchService.Row,System.String}}} arg8) #Core implementation with explicit applicability context (PDC vs non‑PDC) for DC‑sensitive policies.
Parameters
- arg1 System.String
- arg2 System.String
- arg3 ADPlayground.Gpo.Policy.RegistryPolicyScope
- arg4 System.Boolean
- arg5 System.Collections.Generic.IEnumerable{System.String}
- arg6 System.Boolean
- arg7 System.Boolean
- arg8 System.Collections.Generic.IEnumerable{System.ValueTuple{System.String,System.String,System.Func{ADPlayground.Gpo.Policy.EffectivePolicyBatchService.Row,System.String}}}
public static IReadOnlyList<Row> GetForDomainControllers(String domainName, IEnumerable<ValueTuple<String, String, Func<Row, String>>> items) #IReadOnlyList<Row>Batch resolution for Domain Controllers OU (Computer scope).
Parameters
- domainName System.String
- items System.Collections.Generic.IEnumerable{System.ValueTuple{System.String,System.String,System.Func{ADPlayground.Gpo.Policy.EffectivePolicyBatchService.Row,System.String}}}
public static IReadOnlyList<Row> GetForDomainControllers(String domainName, Boolean isPdc, IEnumerable<ValueTuple<String, String, Func<Row, String>>> items) #IReadOnlyList<Row>Batch resolution for Domain Controllers OU (Computer scope) with explicit PDC/non‑PDC applicability context.
Parameters
- domainName System.String
- isPdc System.Boolean
- items System.Collections.Generic.IEnumerable{System.ValueTuple{System.String,System.String,System.Func{ADPlayground.Gpo.Policy.EffectivePolicyBatchService.Row,System.String}}}
public static Void PreBatchForDomainControllers(String domainName) #VoidRuns a lightweight pre-batch for commonly used GPO families (SMB/NTLM, LDAP, Netlogon, Defender) so subsequent rule queries resolve from cache. Only call this when relevant rules are selected.
Parameters
- domainName System.String
public static Void WarmForDomainControllers(String domainName) #VoidPre-warms the applicability context (including effective registry/template maps and writer indexes) for the Domain Controllers OU in both DC contexts (PDC and non‑PDC). This avoids first-hit latency when multiple rules query EPB in the same run.
Parameters
- domainName System.String
Inherited Methods
Properties
public static Int32 MaxParallelGpoReads { get; set; } #Maximum degree of parallelism when reading per‑GPO artifacts. Default: 8.
public static Boolean DumpWriterDetails { get; set; } #When true (or when global Debug logging is enabled), EPB will emit per-writer details for keys that have writers but no resolved value and no deleter detected. This is expensive and should be used only for troubleshooting.