public void GetAutoLogonUserDetails(out string domainName, out string userName)
        {
            userName   = null;
            domainName = null;

            var regValue = _registryManager.GetValue(RegistryHive.LocalMachine,
                                                     RegistryConstants.MachineSettings.SubKeys.AutoLogon,
                                                     RegistryConstants.MachineSettings.ValueNames.AutoLogon);

            if (int.TryParse(regValue, out int autoLogonEnabled) &&
                autoLogonEnabled == 1)
            {
                userName = _registryManager.GetValue(RegistryHive.LocalMachine,
                                                     RegistryConstants.MachineSettings.SubKeys.AutoLogon,
                                                     RegistryConstants.MachineSettings.ValueNames.AutoLogonUserName);
                domainName = _registryManager.GetValue(RegistryHive.LocalMachine,
                                                       RegistryConstants.MachineSettings.SubKeys.AutoLogon,
                                                       RegistryConstants.MachineSettings.ValueNames.AutoLogonDomainName);
            }
        }
        public void DumpAutoLogonRegistrySettings()
        {
            Trace.Info("Dump from the registry for autologon related settings");
            Trace.Info("****Machine specific policies/settings****");
            if (_registryManager.SubKeyExists(RegistryHive.LocalMachine, RegistryConstants.MachineSettings.SubKeys.ShutdownReasonDomainPolicy))
            {
                var shutDownReasonSubKey    = RegistryConstants.MachineSettings.SubKeys.ShutdownReasonDomainPolicy;
                var shutDownReasonValueName = RegistryConstants.MachineSettings.ValueNames.ShutdownReason;
                var shutdownReasonValue     = _registryManager.GetValue(RegistryHive.LocalMachine, shutDownReasonSubKey, shutDownReasonValueName);
                Trace.Info($"Shutdown reason domain policy. Subkey - {shutDownReasonSubKey} ValueName - {shutDownReasonValueName} : {shutdownReasonValue}");
            }
            else
            {
                Trace.Info($"Shutdown reason domain policy not found.");
            }

            if (_registryManager.SubKeyExists(RegistryHive.LocalMachine, RegistryConstants.MachineSettings.SubKeys.LegalNotice))
            {
                var legalNoticeSubKey = RegistryConstants.MachineSettings.SubKeys.LegalNotice;
                var captionValueName  = RegistryConstants.MachineSettings.ValueNames.LegalNoticeCaption;
                //legal caption/text
                var legalNoticeCaption = _registryManager.GetValue(RegistryHive.LocalMachine, legalNoticeSubKey, captionValueName);
                //we must avoid printing the text/caption in the logs as it is user data
                var isLegalNoticeCaptionDefined = !string.IsNullOrEmpty(legalNoticeCaption);
                Trace.Info($"Legal notice caption - Subkey - {legalNoticeSubKey} ValueName - {captionValueName}. Is defined - {isLegalNoticeCaptionDefined}");

                var textValueName            = RegistryConstants.MachineSettings.ValueNames.LegalNoticeText;
                var legalNoticeText          = _registryManager.GetValue(RegistryHive.LocalMachine, legalNoticeSubKey, textValueName);
                var isLegalNoticeTextDefined = !string.IsNullOrEmpty(legalNoticeCaption);
                Trace.Info($"Legal notice text - Subkey - {legalNoticeSubKey} ValueName - {textValueName}. Is defined - {isLegalNoticeTextDefined}");
            }
            else
            {
                Trace.Info($"LegalNotice caption/text not defined");
            }

            var autoLogonSubKey    = RegistryConstants.MachineSettings.SubKeys.AutoLogon;
            var valueName          = RegistryConstants.MachineSettings.ValueNames.AutoLogon;
            var isAutoLogonEnabled = _registryManager.GetValue(RegistryHive.LocalMachine, autoLogonSubKey, valueName);

            Trace.Info($"AutoLogon. Subkey -  {autoLogonSubKey}. ValueName - {valueName} : {isAutoLogonEnabled} (0-disabled, 1-enabled)");

            var userValueName   = RegistryConstants.MachineSettings.ValueNames.AutoLogonUserName;
            var domainValueName = RegistryConstants.MachineSettings.ValueNames.AutoLogonDomainName;
            var userName        = _registryManager.GetValue(RegistryHive.LocalMachine, autoLogonSubKey, userValueName);
            var domainName      = _registryManager.GetValue(RegistryHive.LocalMachine, autoLogonSubKey, domainValueName);

            Trace.Info($"AutoLogonUser. Subkey -  {autoLogonSubKey}. ValueName - {userValueName} : {userName}");
            Trace.Info($"AutoLogonUser. Subkey -  {autoLogonSubKey}. ValueName - {domainValueName} : {domainName}");

            Trace.Info("****User specific policies/settings****");
            var screenSaverPolicySubKeyName = RegistryConstants.UserSettings.SubKeys.ScreenSaverDomainPolicy;
            var screenSaverValueName        = RegistryConstants.UserSettings.ValueNames.ScreenSaver;

            if (_registryManager.SubKeyExists(RegistryHive.CurrentUser, screenSaverPolicySubKeyName))
            {
                var screenSaverSettingValue = _registryManager.GetValue(RegistryHive.CurrentUser, screenSaverPolicySubKeyName, screenSaverValueName);
                Trace.Info($"Screensaver policy.  SubKey - {screenSaverPolicySubKeyName} ValueName - {screenSaverValueName} : {screenSaverSettingValue} (1- enabled)");
            }
            else
            {
                Trace.Info($"Screen saver domain policy doesnt exist");
            }

            Trace.Info("****User specific settings****");

            var screenSaverSettingSubKeyName = RegistryConstants.UserSettings.SubKeys.ScreenSaver;
            var screenSaverSettingValueName  = RegistryConstants.UserSettings.ValueNames.ScreenSaver;
            var screenSaverValue             = _registryManager.GetValue(RegistryHive.CurrentUser, screenSaverSettingSubKeyName, screenSaverSettingValueName);

            Trace.Info($"Screensaver - SubKey - {screenSaverSettingSubKeyName}, ValueName - {screenSaverSettingValueName} : {screenSaverValue} (0-disabled, 1-enabled)");

            var startupSubKeyName  = RegistryConstants.UserSettings.SubKeys.StartupProcess;
            var startupValueName   = RegistryConstants.UserSettings.ValueNames.StartupProcess;
            var startupProcessPath = _registryManager.GetValue(RegistryHive.CurrentUser, startupSubKeyName, startupValueName);

            Trace.Info($"Startup process SubKey - {startupSubKeyName} ValueName - {startupValueName} : {startupProcessPath}");

            Trace.Info("");
        }