private void FixAdministrator()
        {
            using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading))
            {
                if (users.Count == 0)
                {
                    Logger.Warn("No users found, adding Administrator account with default password");

                    l.UpgradeToWriterLock();
                    UserInfo adminInfo = new UserInfo("Administrator", "ServerChecker4");
                    users.Add(adminInfo.Username, adminInfo);
                    l.DowngradeToReaderLock();
                }

                SecuritySubject me = acls[securityGuid];
                System.Collections.Specialized.StringCollection permissions = new System.Collections.Specialized.StringCollection();
                permissions.AddRange(me.GetPermissions());

                if (permissions.Count == 0)
                {
                    Logger.Warn("No permissions found for SecurityManager. Adding permission for Administrator account");

                    l.UpgradeToWriterLock();
                    me.AddPermission("Administrator");
                    l.DowngradeToReaderLock();
                }
            }
        }
        public void AddUser(string username, string password)
        {
            DemandAdministratorPermissions();
            using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForWriting))
            {
                if (users.ContainsKey(username))
                    throw new SC.Interfaces.SCException("A user with name " + username + " already exists.");
                if (username == SYSTEM_ACCOUNT)
                    throw new SC.Interfaces.SCException("Invalid username.");

                UserInfo newUser = new UserInfo(username, password);
                Logger.Info("Adding user " + username);
                users.Add(newUser.Username, newUser);
            }
            SaveSettings();
        }