private bool CreateApplicationConfig(string configDirectory, string userName, string password)
        {
            var tmpSafePassConfig = new SafePassConfiguration();

            if (System.Globalization.CultureInfo.CurrentCulture.Name == "zh-CN")
            {
                tmpSafePassConfig.Application.LanguageFile = ApplicationDefines.ChineseSimpLanguageFile;
            }

            var tmpSecurityProfile = tmpSafePassConfig.Application.Security;

            tmpSecurityProfile.LockWorkspace                 = Program.Config.Application.Security.LockWorkspace;
            tmpSecurityProfile.MasterPassword                = Program.Config.Application.Security.MasterPassword;
            tmpSecurityProfile.CurrentAccount.UserName       = userName;
            tmpSecurityProfile.CurrentAccount.Password       = password;
            tmpSecurityProfile.CurrentAccount.PasswordStored = EncryptorHelper.DESEncrypt(Account.CurrentAccount.SecretKey, tmpSecurityProfile.CurrentAccount.PasswordMd5);

            tmpSecurityProfile.Clipboard.ClipboardClearOnExit       = Program.Config.Application.Security.Clipboard.ClipboardClearOnExit;
            tmpSecurityProfile.Clipboard.ClipboardClearAfterSeconds = Program.Config.Application.Security.Clipboard.ClipboardClearAfterSeconds;

            tmpSecurityProfile.SecretRank.SecretRank0Color = Program.Config.Application.Security.SecretRank.SecretRank0Color;
            tmpSecurityProfile.SecretRank.SecretRank1Color = Program.Config.Application.Security.SecretRank.SecretRank1Color;
            tmpSecurityProfile.SecretRank.SecretRank2Color = Program.Config.Application.Security.SecretRank.SecretRank2Color;
            tmpSecurityProfile.SecretRank.SecretRank3Color = Program.Config.Application.Security.SecretRank.SecretRank3Color;
            tmpSafePassConfig.MainWindow = Program.Config.MainWindow;

            var tmpCreateResult = ApplicationConfigSerializer.SaveApplicationConfig(Path.Combine(configDirectory, "SafePass.config.xml"), tmpSafePassConfig);

            return(tmpCreateResult);
        }
        private static SafePassConfiguration ReadSafePassConfiguration(XmlReader reader)
        {
            var tmpApplicationConfig = new SafePassConfiguration();

            if (SkipEmptyElement(reader))
            {
                return(tmpApplicationConfig);
            }

            reader.ReadStartElement();
            reader.MoveToContent();

            while (true)
            {
                var tmpNodeType = reader.NodeType;
                if (tmpNodeType == XmlNodeType.None || tmpNodeType == XmlNodeType.EndElement)
                {
                    break;
                }

                if (tmpNodeType == XmlNodeType.Element)
                {
                    switch (reader.LocalName)
                    {
                    default:
                        reader.Skip();
                        break;

                    case "Application":
                        tmpApplicationConfig.Application = ReadApplicationConfig(reader);
                        break;

                    case "MainWindow":
                        tmpApplicationConfig.MainWindow = ReadWindowSettings(reader);
                        break;
                    }

                    reader.MoveToContent();
                }
            }

            reader.ReadEndElement();

            return(tmpApplicationConfig);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            HuiruiSoft.Utils.WindowsUtils.LoadImageFromResource(typeof(ResourceFinder));
            HuiruiSoft.Utils.WindowsUtils.LoadAppIconFromResource(typeof(ResourceFinder));

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.DoEvents();

            var tmpCheckResult = ApplicationDefines.CheckApplicationReadied();

            if (!tmpCheckResult)
            {
                if (System.Globalization.CultureInfo.CurrentCulture.Name == "zh-CN")
                {
                    var localLanguageFile = Path.Combine(Application.StartupPath, ApplicationDefines.ChineseSimpLanguageFile);
                    HuiruiSoft.Safe.Localization.LocalizationResourceReader.ReadLocalizationResource(localLanguageFile);
                }

                var tmpInitializeWizard = new formNewSafeWizard();
                if (tmpInitializeWizard.ShowDialog() == DialogResult.OK)
                {
                    NativeShellHelper.StartProcess(WindowsUtils.GetExecutablePath());
                }

                return;
            }

            applicationConfig = ApplicationConfigSerializer.Load();
            if (!string.IsNullOrEmpty(applicationConfig.Application.LanguageFile))
            {
                HuiruiSoft.Safe.Localization.LocalizationResourceReader.ReadLocalizationResource(applicationConfig.Application.LanguageFile);
            }

            try
            {
                ApplicationMessage = NativeMethods.RegisterWindowMessage(ApplicationDefines.WindowMessageId);
            }
            catch (System.Exception)
            {
                System.Diagnostics.Debug.Assert(false);
            }

            bool tmpSingleLock = HuiruiSoft.Utils.GlobalMutexPool.CreateMutex(ApplicationDefines.MutexName, true);

            if (!tmpSingleLock)
            {
                ActivatePreviousInstance(args);
                HuiruiSoft.Utils.GlobalMutexPool.ReleaseAll();
                return;
            }

            log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(Application.StartupPath, ApplicationDefines.Log4NetConfigFile)));

            var tmpGlobalNotify = TryGlobalInstanceNotify(ApplicationDefines.MutexNameGlobal);

            var formLoginWindow = new formLoginWindow();

            if (formLoginWindow.ShowDialog() != DialogResult.OK)
            {
                Application.Exit();
            }
            else
            {
                var tmpMessageFilter = new CustomMessageFilter();
                Application.AddMessageFilter(tmpMessageFilter);

                MainWindow = new formAccountManager();
                Application.Run(MainWindow);

                Application.RemoveMessageFilter(tmpMessageFilter);
            }

            if (tmpGlobalNotify != null)
            {
                System.GC.KeepAlive(tmpGlobalNotify);
            }
        }