/// <summary>Set up the ACL for the user.</summary>
        /// <remarks>
        /// Set up the ACL for the user.
        /// <b>Important: this must run client-side as it needs
        /// to know the id:pass tuple for a user</b>
        /// </remarks>
        /// <param name="username">user name</param>
        /// <param name="perms">permissions</param>
        /// <returns>an ACL list</returns>
        /// <exception cref="System.IO.IOException">ACL creation/parsing problems</exception>
        public virtual IList <ACL> AclsForUser(string username, int perms)
        {
            IList <ACL>      clientACLs = GetClientAcls();
            RegistrySecurity security   = GetRegistrySecurity();

            if (security.IsSecureRegistry())
            {
                clientACLs.AddItem(security.CreateACLfromUsername(username, perms));
            }
            return(clientACLs);
        }
        /// <summary>Init operation sets up the system ACLs.</summary>
        /// <param name="conf">configuration of the service</param>
        /// <exception cref="System.Exception"/>
        protected override void ServiceInit(Configuration conf)
        {
            base.ServiceInit(conf);
            RegistrySecurity registrySecurity = GetRegistrySecurity();

            if (registrySecurity.IsSecureRegistry())
            {
                ACL sasl = registrySecurity.CreateSaslACLFromCurrentUser(ZooDefs.Perms.All);
                registrySecurity.AddSystemACL(sasl);
                Log.Info("Registry System ACLs:", RegistrySecurity.AclsToString(registrySecurity.
                                                                                GetSystemACLs()));
            }
        }