public BootOptionManager()
        {
            currentBootOptionFilePath = System.Windows.Forms.Application.StartupPath + "\\" + StringResource.bootOptionFileName;

            // 비밀번호 파일 읽기 (없으면 새로 생성)
            if (System.IO.File.Exists(currentBootOptionFilePath))
            {
                string prevPass  = System.IO.File.ReadAllText(currentBootOptionFilePath);
                string resultStr = PasswordEncryption.DecrypString(prevPass, App.passwordEncryptionKey);
                if (resultStr.Equals("true"))
                {
                    autoBootingOption = true;
                    runRegKey.SetValue("ProcessContorller", Environment.CurrentDirectory + "\\" + AppDomain.CurrentDomain.FriendlyName);
                }
                else if (resultStr.Equals("false"))
                {
                    autoBootingOption = false;
                    runRegKey.SetValue("ProcessController", false);
                }
            }
            else
            {
                FileStream myFile = System.IO.File.Create(currentBootOptionFilePath);
                myFile.Close();
                string prevPass = PasswordEncryption.EncrypString("true", App.passwordEncryptionKey);
                System.IO.File.WriteAllText(currentBootOptionFilePath, prevPass); //true로 기본 파일 생성
                autoBootingOption = true;
                runRegKey.SetValue("ProcessController", true);
            }
        }
        private MainWindow()
        {
            InitializeComponent();
            this.Title        = StringResource.mainWinTitle;
            noneBlockFileList = ProcessManager.BlockProcessName;
            noneBlockFileList.Sort();

            // 차단 프로세스 리스트 파일 읽기 (없으면 새로 생성)
            currentBlockFileListPath = System.Windows.Forms.Application.StartupPath + "\\" + StringResource.blockProcessFileName;
            if (System.IO.File.Exists(currentBlockFileListPath))
            {
                string prevPass = System.IO.File.ReadAllText(currentBlockFileListPath);
                if (prevPass != "")
                {
                    string   tempBlockStr = PasswordEncryption.DecrypString(prevPass, App.passwordEncryptionKey);
                    string[] splitWords   = tempBlockStr.Split(',');
                    foreach (string str in splitWords)
                    {
                        blockFileList.Add(str);
                        noneBlockFileList.Remove(str);
                    }
                    finalBlockList = blockFileList;
                    finalBlockList.Sort();
                }
            }
            else
            {
                FileStream myFile = System.IO.File.Create(currentBlockFileListPath);
                myFile.Close();
                System.IO.File.WriteAllText(currentBlockFileListPath, ""); //빈 파일 생성
            }
            ProcessManager.UpdateProcessList(blockFileList, noneBlockFileList, currentBlockProcessList, canBlockProcessList);
            foreach (string str in blockFileList)
            {
                Console.WriteLine("차단 : " + str);
            }
            foreach (string str in noneBlockFileList)
            {
                Console.WriteLine("비차단 : " + str);
            }


            // 부팅 옵션 처리
            if (App.AppBootOptionManager.AutoBootingOption == true)
            {
                bootingOptionCheck.IsChecked = true;
            }
            else
            {
                bootingOptionCheck.IsChecked = false;
            }
        }
예제 #3
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            //중복 실행 방지
            try
            {
                Process[] myProcesses = Process.GetProcessesByName("ProcessController");
                if (myProcesses.Length > 1)
                {
                    MessageBox.Show("프로그램이 이미 실행중입니다");
                    System.Environment.Exit(0);
                }
            }
            catch (Exception ex)
            {
            }

            // 노티파이 메뉴 만들기
            NotifyIconHandler.SetNotifyObj(2, StringResource.notifyMenuTitle, ProcessController.Properties.Resources.notifyIcon, NotifyMenuMethod.NotifyTitleMethod);
            myNotify = NotifyIconHandler.NotifyObj;
            NotifyMenuMethod.SetNotifyMenu(myNotify);

            // 부팅 옵션 처리
            appBootOptionManager = new BootOptionManager();

            // 블록 프로세스 읽기
            ProcessManager.ReadBlockProcessName();

            currentPasswordPath = System.Windows.Forms.Application.StartupPath + "\\" + StringResource.passwordFileName;

            // 비밀번호 파일 읽기
            if (System.IO.File.Exists(currentPasswordPath))
            {
                string prevPass = System.IO.File.ReadAllText(currentPasswordPath);
                if (prevPass != "")
                {
                    password = PasswordEncryption.DecrypString(prevPass, passwordEncryptionKey);
                }
                else
                {
                    password = "";
                }
            }
            else
            {
                /*
                 * FileStream myFile = System.IO.File.Create(currentPasswordPath);
                 * myFile.Close();
                 * System.IO.File.WriteAllText(currentPasswordPath, blockPassKey); //차단 파일 생성
                 * password = PasswordEncryption.DecrypString(blockPassKey, passwordEncryptionKey);*/
                MessageBox.Show("암호 파일에 직접 접근한 흔적이 있습니다. 마스터 암호로 실행해주세요.");
                FileStream myFile = System.IO.File.Create(currentPasswordPath);
                myFile.Close();
                string prevPass = PasswordEncryption.EncrypString(blockPassKey, passwordEncryptionKey);
                System.IO.File.WriteAllText(currentPasswordPath, prevPass); //차단 파일 생성
                password = blockPassKey;
                AutoLogin();
            }


            if (password == "")
            {
                MessageBox.Show("암호 파일에 직접 접근한 흔적이 있습니다. 마스터 암호로 실행해주세요.");
                string prevPass = PasswordEncryption.EncrypString(blockPassKey, passwordEncryptionKey);
                System.IO.File.WriteAllText(currentPasswordPath, prevPass); //차단 파일 생성
                password = blockPassKey;
                AutoLogin();
            }
            else if (password == "MasterPass") // 초기 마스터 비밀번호 생성코드 필요
            {
                MessageBox.Show("첫 이용입니다. 비밀번호를 설정해주세요.");
                passwordApplyWin = PasswordApply.GetPasswordApplyWin;
                PasswordApplyWin.Show();
            }
            else if (appBootOptionManager.AutoBootingOption)
            {
                // 자동 로그인
                AutoLogin();
                MessageBox.Show(StringResource.appTitle + "가 실행됩니다.");
            }
            else if (password == emergencyExitKey)
            {
                MessageBox.Show("개발자 전용 긴급 exit 백도어");
                System.Environment.Exit(0);
            }
            else
            {
                LoginSession     = false;
                passwordInputWin = PasswordInput.GetPasswordInputWin;
                passwordInputWin.Show();
            }
        }