WindowsGroupPolicyClient class

Namespace Runic.Platform.Administration.Windows.GroupPolicy · Runic.Platform.Administration.Windows 0.7.0-preview.5

public sealed class WindowsGroupPolicyClient

GPMC operations for an explicit domain and controller, using the caller's Windows identity.

Remarks

Requires GPMC/RSAT. Long native operations run on an owned apartment; cancellation after native execution starts does not imply rollback.

Constructors

WindowsGroupPolicyClient

public WindowsGroupPolicyClient(string domainName, string domainController)

Creates a client with no implicit domain-controller selection.

Methods

BackupAsync

public Task<GroupPolicyOperationResult<GroupPolicyBackup>> BackupAsync(Guid id, string directory, string comment = "", CancellationToken cancellationToken = default)

Backs up a selected GPO to an explicit directory. Completion includes GPMC overall status.

CreateAsync

public Task<GroupPolicySnapshot> CreateAsync(string displayName, CancellationToken cancellationToken = default)

Creates a new GPO and assigns its display name. Naming failure may leave a newly created GPO; no automatic deletion occurs.

CreateLinkAsync

public Task CreateLinkAsync(Guid id, string targetDistinguishedName, int order = -1, bool enabled = true, bool enforced = false, CancellationToken cancellationToken = default)

Creates a link at a one-based position; -1 appends at lowest precedence. An existing link is a conflict.

DeleteAsync

public Task<bool> DeleteAsync(Guid id, CancellationToken cancellationToken = default)

Deletes a GPO through GPMC. Returns false only if absent.

DeleteLinkAsync

public Task<bool> DeleteLinkAsync(Guid id, string targetDistinguishedName, CancellationToken cancellationToken = default)

Deletes a direct link. Returns false if that link is absent.

EnumerateAsync

public Task<ImmutableArray<GroupPolicySnapshot>> EnumerateAsync(CancellationToken cancellationToken = default)

Enumerates all GPOs; display names are not assumed to be unique.

EnumerateBackupsAsync

public static Task<ImmutableArray<GroupPolicyBackup>> EnumerateBackupsAsync(string directory, CancellationToken cancellationToken = default)

Enumerates every backup in an explicit GPMC backup directory, without selecting by name or recency.

Remarks

Requires local GPMC but does not connect to the configured domain. No partial results are returned on failure or cancellation.

FindAsync

public Task<GroupPolicySnapshot?> FindAsync(Guid id, CancellationToken cancellationToken = default)

Finds a GPO by GUID; null means absent.

GenerateReportAsync

public Task<GroupPolicyOperationResult<string>> GenerateReportAsync(Guid id, GroupPolicyReportFormat format, CancellationToken cancellationToken = default)

Generates XML or HTML with native operation status.

GetInheritanceBlockedAsync

public Task<bool> GetInheritanceBlockedAsync(string targetDistinguishedName, CancellationToken cancellationToken = default)

Reads whether the target blocks inherited policy links.

GetLinksAsync

public Task<ImmutableArray<GroupPolicyLink>> GetLinksAsync(string targetDistinguishedName, CancellationToken cancellationToken = default)

Reads direct links in native precedence order.

GetPermissionsAsync

public Task<ImmutableArray<GroupPolicyPermissionEntry>> GetPermissionsAsync(Guid id, CancellationToken cancellationToken = default)

Reads security filtering/delegation including inherited and custom permission entries.

GrantPermissionAsync

public Task GrantPermissionAsync(Guid id, string trustee, GroupPolicyPermissionLevel level, bool inheritable = false, CancellationToken cancellationToken = default)

Grants a curated permission to an explicit trustee name or SID, retaining other trustees.

ImportAsync

public Task<GroupPolicyOperationResult<GroupPolicySnapshot>> ImportAsync(Guid destinationId, string backupDirectory, Guid backupId, GroupPolicyImportOptions? options = null, CancellationToken cancellationToken = default)

Imports policy settings into an existing GPO, replacing its settings while retaining its identity and links.

RemoveTrusteePermissionsAsync

public Task RemoveTrusteePermissionsAsync(Guid id, string trustee, CancellationToken cancellationToken = default)

Removes explicit permissions for one trustee. Inherited permissions remain governed by their parent.

RenameAsync

public Task RenameAsync(Guid id, string displayName, CancellationToken cancellationToken = default)

Renames a GPO without changing its identity or policy settings.

RestoreAsync

public Task<GroupPolicyOperationResult<GroupPolicySnapshot>> RestoreAsync(string backupDirectory, Guid backupId, CancellationToken cancellationToken = default)

Restores an explicitly selected backup through GPMC, preserving its original GPO identity.

SetEnabledAsync

public Task SetEnabledAsync(Guid id, bool? userEnabled = null, bool? computerEnabled = null, CancellationToken cancellationToken = default)

Enables/disables selected policy halves; null preserves a half's current state.

SetInheritanceBlockedAsync

public Task SetInheritanceBlockedAsync(string targetDistinguishedName, bool blocked, CancellationToken cancellationToken = default)

Changes blocked inheritance without changing direct links.

SetLinkOrderAsync

public Task SetLinkOrderAsync(string targetDistinguishedName, ImmutableArray<Guid> highestPrecedenceFirst, CancellationToken cancellationToken = default)

Reorders every direct link, highest precedence first. Retains exact link text/options and rejects concurrent changes.

SetWmiFilterAsync

public Task SetWmiFilterAsync(Guid id, string? filterPath, CancellationToken cancellationToken = default)

Associates an explicit WMI-filter directory path; null removes the association.

UpdateLinkAsync

public Task UpdateLinkAsync(Guid id, string targetDistinguishedName, bool? enabled = null, bool? enforced = null, CancellationToken cancellationToken = default)

Updates selected direct-link flags. Separate native changes are not transactional.