private T CreateObject <T>(SafeSamHandle handle, uint user_id, string name, Func <string, Sid, T> func) { try { Sid sid = RidToSid(user_id, false).GetResultOrDefault(); if (sid == null) { sid = DomainId.CreateRelative(user_id); } if (name == null) { name = LookupId(user_id, false).GetResultOrDefault()?.Name ?? sid.ToString(); } return(func(name, sid)); } catch { handle.Dispose(); throw; } }
private SamUser CreateUserObject(SafeSamHandle user_handle, SamUserAccessRights desired_access, string name, uint user_id) { try { Sid sid = RidToSid(user_id, false).GetResultOrDefault(); if (sid == null) { sid = DomainId.CreateRelative(user_id); } if (name == null) { name = LookupId(user_id, false).GetResultOrDefault()?.Name ?? sid.ToString(); } return(new SamUser(user_handle, desired_access, ServerName, name, sid)); } catch { user_handle.Dispose(); throw; } }
/// <summary> /// Dispose the policy. /// </summary> public void Dispose() { _handle.Dispose(); }