public override IEnumerable <CommandDTOBase?> Execute(string[] args) { if (!SecurityUtil.IsHighIntegrity()) { WriteHost("Must be an administrator to enumerate User Right Assignments"); yield break; } var computerName = "localhost"; string filter = null; LsaWrapper lsa = null; if (args.Length >= 1) { computerName = args[0]; } if (args.Length >= 2) { filter = ".*" + args[1] + ".*"; } try { lsa = new LsaWrapper(computerName); } catch (UnauthorizedAccessException) { WriteError("Insufficient privileges"); yield break; } catch (Exception e) { WriteError("Unhandled exception enumerating user right assignments: " + e); yield break; } var privilegeSet = filter == null ? _defaultPrivileges : _allPrivileges.Where(p => Regex.IsMatch(p, filter, RegexOptions.IgnoreCase)).ToArray(); foreach (var priv in privilegeSet) { var principals = lsa.ReadPrivilege(priv); yield return(new UserRightAssignmentsDTO() { Right = priv, Principals = principals }); } if (lsa != null) { lsa.Dispose(); } }