diff --git a/src/FRun.csproj.user b/src/FRun.csproj.user new file mode 100644 index 0000000..107e756 --- /dev/null +++ b/src/FRun.csproj.user @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/Program.cs b/src/Program.cs index c735645..57e0e59 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -56,47 +56,70 @@ public static bool IsAdministrator() } public static void HelpMsg() { - MessageBox.Show($"FastRun [FRun] v{ShowVersion(2)} beta\nРазработчик: DesConnet\nСайт: https://ds1nc.ru\n\nДля быстрого запуска программы можно использовать окно выполнить или командную строку.\n\nПример использования: frun dnspy(Регистр не важен)\n\nДоступные аргументы:\n--about - Открывает окно помощи\n--settings - Открывает окно настроек\n--add - Добавить новую программу\n--clear - Очистить список программ\n--install - Выполнить установку FRun в данной директории\n--uninstall - Удаление FRun\n--prefix [prefix] - Изменение префикса\n--remove [name] - Удалить приложение из списка", $"FRun v{ShowVersion(2)} beta (c0d9d by DesConnet)", MessageBoxButtons.OK, MessageBoxIcon.Information); - Environment.Exit(1); + MessageBox.Show($"FastRun [FRun] v{ShowVersion(2)} beta\nРазработчик: DesConnet\nСайт: https://ds1nc.ru\n\nДля быстрого запуска программы можно использовать окно выполнить или командную строку.\n\nПример использования: frun dnspy(Регистр не важен)\n\nДоступные аргументы:\n--settings - Открывает окно настроек\n--add - Добавить новую программу\n--clear - Очистить список программ\n--install - Выполнить установку FRun в данной директории\n--uninstall - Удаление FRun\n--prefix [prefix] - Изменение префикса\n--remove [name] - Удалить приложение из списка", $"FRun v{ShowVersion(2)} beta (c0d9d by DesConnet)", MessageBoxButtons.OK, MessageBoxIcon.Information); + Environment.Exit(0); } [STAThread] static void Main(string[] args) - { + { if (args.Length == 0) HelpMsg(); - #region Команды - switch (args[0]) + #region Запуск приложений + using (RegistryKey frun = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FRun", true)) { - case "--about": - HelpMsg(); - break; + try + { + string[] Apps = frun.GetSubKeyNames(); - case "--settings": - if (IsAdministrator()) new Settings().ShowDialog(); - else + if (Apps.Any(x => x == args[0])) { - RunFile(Application.ExecutablePath, "--settings", true, false, false); - Environment.Exit(1); + using (RegistryKey AppKey = frun.OpenSubKey(Apps.Single(x => x == args[0]), true)) + { + switch ((int)AppKey.GetValue("RunType")) + { + case (int)Types.runType.FILE: + RunFile(AppKey.GetValue("ExecParam").ToString(), AppKey.GetValue("Args") != null ? AppKey.GetValue("Args").ToString() : "", AppKey.GetValue("UAC") != null ? (int)AppKey.GetValue("UAC") == 0 ? false : true : false, false, false); + Environment.Exit(0); + break; + + case (int)Types.runType.FOLDER: + RunFile("explorer.exe", AppKey.GetValue("ExecParam").ToString(), false, false, false); + Environment.Exit(0); + break; + + case (int)Types.runType.LINK: + RunFile(AppKey.GetValue("ExecParam").ToString(), "", false, false, false); + Environment.Exit(0); + break; + } + } } - break; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); + } + } + #endregion - case "--add": - if (IsAdministrator()) - { + #region Команды + if (IsAdministrator()) + { + Application.EnableVisualStyles(); + switch (args[0]) + { + case "--settings": + new Settings().ShowDialog(); + Environment.Exit(0); + break; + + case "--add": new NewApp().ShowDialog(); - Environment.Exit(1); - } - else - { - RunFile(Application.ExecutablePath, "--add", true, false, false); - Environment.Exit(1); - } - break; + Environment.Exit(0); + break; - case "--clear": - if (IsAdministrator()) - { + case "--clear": if (MessageBox.Show("Вы действительно хотите удалить все приложения из FRun?", "Очистка программ [FRun]", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { using (RegistryKey frun = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FRun", true)) @@ -117,129 +140,90 @@ static void Main(string[] args) } } } - Environment.Exit(1); - } - else - { - RunFile(Application.ExecutablePath, "--clear", true, false, false); - Environment.Exit(1); - } - break; + Environment.Exit(0); + break; - case "--install": - if (IsAdministrator()) - { + case "--install": using (RegistryKey frun = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\FRun", true)) { - if (frun.GetValue("InstalledPath") == null) + if (frun.GetValue("InstalledPath") != null) + { + MessageBox.Show("FRun уже установлен!", "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); + Environment.Exit(0); + } + + if (MessageBox.Show("Вы действительно хотите установить FRun в данной директории?", "Установка [FRun]", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { - if (MessageBox.Show("Вы действительно хотите установить FRun в данной директории?", "Установка [FRun]", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + try { - try - { - frun.SetValue("InstalledPath", Application.ExecutablePath); - using (RegistryKey Env = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true)) - { - string oldEnv = Env.GetValue("Path").ToString(); - Env.SetValue("Path", $"{(oldEnv.EndsWith(";") ? oldEnv : $"{oldEnv};")}{Path.GetDirectoryName(Application.ExecutablePath)};"); - SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment"); - } - - MessageBox.Show("Установка прошла успешно!\nТеперь вы можете вызывать FRun из окна выполнить и командной строки!", "Установка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) + frun.SetValue("InstalledPath", Application.ExecutablePath); + using (RegistryKey Env = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true)) { - MessageBox.Show(ex.Message, "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); + string oldEnv = Env.GetValue("Path").ToString(); + Env.SetValue("Path", $"{(oldEnv.EndsWith(";") ? oldEnv : $"{oldEnv};")}{Path.GetDirectoryName(Application.ExecutablePath)};"); + SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment"); } + + MessageBox.Show("Установка прошла успешно!\nТеперь вы можете вызывать FRun из окна выполнить и командной строки!", "Установка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); } - } - else - { - MessageBox.Show("FRun уже установлен!", "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); } } + Environment.Exit(0); + break; - Environment.Exit(1); - } - else - { - RunFile(Application.ExecutablePath, "--install", true, false, false); - Environment.Exit(1); - } - break; - - case "--uninstall": - if (IsAdministrator()) - { + case "--uninstall": using (RegistryKey frun = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\FRun", true)) { - if (frun.GetValue("InstalledPath") != null) + if (frun.GetValue("InstalledPath") == null) { - if (MessageBox.Show("Вы действительно хотите удалить FRun?", "Установка [FRun]", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + MessageBox.Show("FRun ещё не установлен!", "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); + Environment.Exit(0); + } + + if (MessageBox.Show("Вы действительно хотите удалить FRun?", "Установка [FRun]", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + try { - try + frun.DeleteValue("InstalledPath"); + using (RegistryKey Env = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true)) { - frun.DeleteValue("InstalledPath"); - using (RegistryKey Env = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true)) - { - string[] oldEnv = Env.GetValue("Path").ToString().Split(';'); - oldEnv = oldEnv.Where(x => x != Path.GetDirectoryName(Application.ExecutablePath)).ToArray(); - - - - Env.SetValue("Path", $"{string.Join(";", oldEnv)}"); - SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment"); - } + string[] oldEnv = Env.GetValue("Path").ToString().Split(';'); + oldEnv = oldEnv.Where(x => x != Path.GetDirectoryName(Application.ExecutablePath)).ToArray(); - MessageBox.Show("Удаление прошло успешно!", "Установка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); + Env.SetValue("Path", $"{string.Join(";", oldEnv)}"); + SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment"); } + + MessageBox.Show("Удаление прошло успешно!", "Установка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); } - } - else - { - MessageBox.Show("FRun ещё не установлен!", "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); } } + Environment.Exit(0); + break; - Environment.Exit(1); - } - else - { - RunFile(Application.ExecutablePath, "--uninstall", true, false, false); - Environment.Exit(1); - } - break; - - case "--prefix": - if (IsAdministrator()) - { + case "--prefix": if (args[1] == null) { MessageBox.Show("Не указан префикс", "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); - Environment.Exit(1); + Environment.Exit(0); } File.Move(Application.ExecutablePath, $@"{Path.GetDirectoryName(Application.ExecutablePath)}\{args[1]}.exe"); - return; - } - else - { - RunFile(Application.ExecutablePath, $"--prefix {(args[1] != null ? args[1] : "")}", true, false, false); - Environment.Exit(1); - } - break; + break; - case "--remove": - if (IsAdministrator()) - { + case "--remove": if (args[1] == null) { MessageBox.Show("Не указана программа", "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); - Environment.Exit(1); + Environment.Exit(0); } using (RegistryKey frun = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FRun", true)) @@ -249,58 +233,20 @@ static void Main(string[] args) if (Apps.Any(x => x == args[1])) { frun.DeleteSubKeyTree(args[1]); - } + } else { MessageBox.Show($"Не удалось найти программу с названием \"{args[1]}\"", "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); } } - return; - } - else - { - RunFile(Application.ExecutablePath, $"--remove {(args[1] != null ? args[1] : "")}", true, false, false); - Environment.Exit(1); - } - break; + Environment.Exit(0); + break; + } } - #endregion - - #region Запуск приложений - using (RegistryKey frun = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FRun", true)) + else { - try - { - string[] Apps = frun.GetSubKeyNames(); - - if (Apps.Any(x => x == args[0])) - { - using (RegistryKey AppKey = frun.OpenSubKey(Apps.Single(x => x == args[0]), true)) - { - switch ((int)AppKey.GetValue("RunType")) - { - case (int)Types.runType.FILE: - RunFile(AppKey.GetValue("ExecParam").ToString(), AppKey.GetValue("Args") != null ? AppKey.GetValue("Args").ToString() : "", AppKey.GetValue("UAC") != null ? (int)AppKey.GetValue("UAC") == 0 ? false : true : false, false, false); - Environment.Exit(1); - break; - - case (int)Types.runType.FOLDER: - RunFile("explorer.exe", AppKey.GetValue("ExecParam").ToString(), false, false, false); - Environment.Exit(1); - break; - - case (int)Types.runType.LINK: - RunFile(AppKey.GetValue("ExecParam").ToString(), "", false, false, false); - Environment.Exit(1); - break; - } - } - } - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка [FRun]", MessageBoxButtons.OK, MessageBoxIcon.Stop); - } + RunFile(Application.ExecutablePath, $"{args[0]} {(args.Length > 1 ? args[1] : "")}", true, false, false); + Environment.Exit(0); } #endregion diff --git a/src/Properties/AssemblyInfo.cs b/src/Properties/AssemblyInfo.cs index 6b36579..c81c389 100644 --- a/src/Properties/AssemblyInfo.cs +++ b/src/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // Можно задать все значения или принять номера сборки и редакции по умолчанию // используя "*", как показано ниже: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.1.0.0")] -[assembly: AssemblyFileVersion("0.1.0.0")] +[assembly: AssemblyVersion("0.2.0.0")] +[assembly: AssemblyFileVersion("0.2.0.0")]