903 / 12 / 1
Регистрация: 02.10.2010
Сообщений: 136
1

Запуск приложения только с лаунчера

21.04.2011, 13:26. Показов 6037. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть два файла EXE.Приложение и лаунчер.Скажите что можно сделать, чтобы приложение запускалось только с лаунчера, то есть при клике на самом приложении оно не запускалось.
0
21.04.2011, 13:26
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2011, 13:26
Ответы с готовыми решениями:

Запуск только одного экземпляра приложения
Вобщем есть вот такой вот код using System.Threading; using System.Diagnostics; using System.Text.RegularExpressions; namespace...

Запуск из приложения с правами администратора, приложения без прав администратора
Как сделать подобный запуск?

Запуск приложения
подскажите, как программно запустить, отслеживать, а при необходимости завершить приложение?

14
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
21.04.2011, 13:32 2
предлагаю такой вариант:
1) в лаунчере делаешь запуск приложения с параметрами
2) в самом приложении делаешь проверку на переданные параметры - если они неверны, выводим сообщение об ошибке и закрываем прогу

какой-нибудь особо прошаренный юзер конечно сможет сделать что-нить нехорошее и узнать, что и как ты делаешь и запустить твою прогу с этими же параметрами, но, думаю, у тебя там не база данных цру и так делать никто не будет
1
903 / 12 / 1
Регистрация: 02.10.2010
Сообщений: 136
21.04.2011, 13:53  [ТС] 3
znake, можешь привести пример как считывать параметры?
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
21.04.2011, 14:08 4
какой-нибудь особо прошаренный юзер конечно сможет сделать что-нить нехорошее и узнать, что и как ты делаешь и запустить твою прогу с этими же параметрами, но, думаю, у тебя там не база данных цру и так делать никто не будет
От прошареных тоже можно защититься
Передавать например хеш текущей даты с точностью до минуты, прога тоже возьмет хеш и сравнит

lancer2404,
C#
1
2
void Main(string[] args)  //  <<< args это массив параметров
{
1
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
21.04.2011, 14:13 5
для винформс приложения:

1)
файл Program.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
 
namespace WindowsFormsApplication5
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1(args));
        }
    }
}


2)
файл главной формы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        string[] arg;
        public Form1(string [] args)
        {
            InitializeComponent();
            arg = args;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            if (arg.Length == 0) 
                { 
                    MessageBox.Show("no arguments"); 
                    this.Close(); 
                }
            else if (arg[0] == "-h") MessageBox.Show("good arguments, let's rock!");
                 else
                    {
                        MessageBox.Show("bad arguments"); 
                        this.Close(); 
                    }
        }
    }
}


запуск и передачу параметров лаунчером делай через Process.Start()

в качестве пояснения - скомпилишь и попробуй запустить скомпиленное приложение через консольку... допустим выходной файл называется app:
1) app - выдаст мессадж "no arguments" и закроется прога
2) app -b - выдаст мессадж "bad arguments" и закроется прога
3) app -h - выдаст мессадж "good arguments, let's rock" и откроется главная форма


думаю, дальше разберешься
3
903 / 12 / 1
Регистрация: 02.10.2010
Сообщений: 136
26.04.2011, 16:20  [ТС] 6
А еще есть какой нибудь способ запуска? (Исходники утеряны)
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
26.04.2011, 16:25 7
Цитата Сообщение от lancer2404 Посмотреть сообщение
(Исходники утеряны)
и? напиши заново...
0
903 / 12 / 1
Регистрация: 02.10.2010
Сообщений: 136
26.04.2011, 16:26  [ТС] 8
Там большое приложение.времени нет.
0
znake
26.04.2011, 16:32
  #9

Не по теме:

то ли лыжи не едут...(с)
либо ты чего-то не понимаешь, либо я! какой бы там ни был проект и т.п. - сделать запуск с лаунчера с моим примером перед глазами - дело 20 минут (и от самого приложения не зависит никак!)...чуть ли не слово в слово скопировать...а сам лаунчер - консольное приложение в одну строку: Process.Start...

0
903 / 12 / 1
Регистрация: 02.10.2010
Сообщений: 136
26.04.2011, 16:33  [ТС] 10
znake, да у тебя отличный пример мне пригодился, но есть приложение в которое я не могу засунуть проверку аргументов.
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
26.04.2011, 16:39 11
тогда либо жди мудрого волшебника Гудвина, который шарит, как сделать иначе, либо выкладывай Program.cs и загрузку той формы, которая первая грузится (это же не секретная информация?) и давай вместе подумаем, как можно обойти то, что ты не можешь туда засунуть проверку аргументов...
0
903 / 12 / 1
Регистрация: 02.10.2010
Сообщений: 136
26.04.2011, 17:51  [ТС] 12
Ты наверно не понял. У меня есть приложение(без исходников) скомпилированное, вот что можно с ним сделать чтобы оно не запускалось обычным способом. Я знаю что есть всякие протекторы, но они интегрируются в него. Может ты знаешь протекторы какие или типо того?
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
26.04.2011, 17:55 13
а, так вот о чем речь...нет, тогда у меня нет вариантов кроме параноидальных:
1) приложение засовывается в архив
2) архив запароливается как-нибудь
3) пишется лаунчер, который каждый раз будет раскрывать архив и запускать оттуда прогу

и в качестве изюминки на вершину этой паранойи: в лаунчере вбит какой-нить жосткий алгоритм генерации ключей и каждый раз генерится новый ключ на архив
2
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
26.04.2011, 18:09 14
Так, берется чужой exe, читается как обычный файл, шифруется любым способом и записывается в файл. Потом, когда надо, ланчер читает этот файл в массив байт, расшифровует и запускает прям из памяти. Это же не так сложно.
0
903 / 12 / 1
Регистрация: 02.10.2010
Сообщений: 136
26.04.2011, 20:23  [ТС] 15
body90, для меня сложно. никогда таким не занимался. Пожалуйста если можно ссылку или пример.Премного благодарен

Добавлено через 2 часа 12 минут
Нашел вот это.Написано нужно создат свою точку входа.Не могу разобраться что куда
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class StartUpApplication
{
    public static void Main()
    {
        var frm = new frmMain();
        if (frm.ShowDialog() == DialogResult.OK)
        {
            //определяем путь к файлу на диске
            //каким образом выбираете, не имеет значения. Можно передать и в командной строке
            string pathToFile = frm.lstMain.SelectedItem.ToString();
            //создаем поток для чтения
            var fs = new FileStream(pathToFile, FileMode.Open);
            //создаем побитовую читалку
            var br = new BinaryReader(fs);
            //bin содержит побайтово весь exe-файл
            byte[] bin = br.ReadBytes((int)(fs.Length));
            //закрываем поток
            fs.Close();
            //закрываем читалку
            br.Close();
 
            //загружаем байты в сборку
            Assembly a = Assembly.Load(bin);
            //ищем точку входа в приложение
            MethodInfo method = a.EntryPoint;
            //если найдена точка входа
            if (method != null)
            {
                //создаем экземпляр главной формы
                object o = a.CreateInstance(method.Name);
                //запускаем приложение через точку входа
                method.Invoke(o, null);
            }
        }
    }
}
0
26.04.2011, 20:23
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2011, 20:23
Помогаю со студенческими работами здесь

Запуск приложения от администратора
Все доброго времени суток! Такой вопрос, как мне через Process запустить приложения от имени локального администратора, т.к. учетная...

Запуск приложения с параметрами.
Есть такая программа OziExplorer. В ней можно просматривать треки,путевые точки и т.д. Мне нужно запустить из своего приложения...

Запуск приложения по расширению
я знаю как создавать расширение, которое открывает программу, знаю как создавать программу открывающую файл по расширению, но как...

Запуск приложения из браузера
У меня есть приложение на C# cделанное в visual studio и игра на Unity. Мне нужно сделать такую схему: На сайте пользователь жмёт на...

Запуск стороннего приложения
Вот такой вопрос, какой нужен код для запуска стороннего приложения (chm, exe и т.д) при нажатии на кнопку? в VS 2010 :)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Ключевые слова Python
hw_wired 15.02.2025
Ключевые слова в Python - это специальные зарезервированные слова, которые имеют особое значение и функции в языке. В настоящее время Python включает 35 ключевых слов и 4 мягких ключевых слова. Эти. . .
Отличия изменяемых и неизменяемых типов в Python
hw_wired 15.02.2025
В Python существует принципиальное различие между изменяемыми (mutable) и неизменяемыми (immutable) типами данных, которое оказывает существенное влияние на работу программ. Это различие часто. . .
Python: сравнение списков и кортежей
hw_wired 15.02.2025
В Python последовательности являются одними из самых важных и часто используемых типов данных. Они позволяют хранить упорядоченные наборы элементов, к которым можно обращаться по индексу. Среди всех. . .
Как скачивать файлы с URL с помощью Python
hw_wired 15.02.2025
Для скачивания файлов Python предлагает как встроенные средства, так и сторонние библиотеки. Встроенный модуль urllib из стандартной библиотеки обеспечивает базовую функциональность для работы с URL. . .
Использование SQLAlchemy в Python
hw_wired 15.02.2025
SQLAlchemy - мощная библиотека для работы с базами данных в Python, которая предоставляет полноценный набор средств для объектно-реляционного отображения (ORM) и обширные возможности для работы с. . .
Взаимодействие с REST API в Python
hw_wired 15.02.2025
В современном мире разработки программного обеспечения REST API стал неотъемлемой частью архитектуры веб-приложений. API (Application Programming Interface) - это набор правил и протоколов,. . .
Разделение строк в Python
hw_wired 15.02.2025
Python предлагает богатый набор возможностей для работы со строками, и среди них разделение строк занимает особое место. Этот процесс позволяет разбивать текст на отдельные компоненты, что критично. . .
Объединение строк в Python
hw_wired 15.02.2025
При работе с текстовыми данными в Python нередко возникает необходимость объединять несколько строк в одну. Это может потребоваться при форматировании вывода, обработке текстовых файлов или создании. . .
Лучшие игровые движки на Python
hw_wired 15.02.2025
В последнее время разработка игр стала одним из самых популярных направлений программирования, и Python не остался в стороне от этого тренда. Несмотря на то, что Python обычно не ассоциируется с. . .
Декоратор jit в Python
hw_wired 15.02.2025
Если вы достаточно долго изучаете программы и пакеты на Python для машинного обучения, то наверняка замечали, что паттерн "JIT-декоратор" довольно популярен. Этот подход позволяет превратить обычные. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru