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); }
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); } }