Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 2
Регистрация: 03.07.2014
Сообщений: 277

Самокопирование и запуск

26.02.2016, 18:59. Показов 1145. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с такой проблемкой. Файл при запуске сам себя копирует в папку с игрой и нужно чтобы запустился. Но у меня получается постоянный цикл, проверки и запуска. Как сделать проверку на наличие и если есть файл то просто запустить его, а если нету, то скопировать и запустить.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public string MK9 = @"D\\MK9\\Cheat";
        public Form1()
        {
            InitializeComponent();
            StartUp();
            StartGame();
 
        }
 
        private void StartUp()
        {
            string path = MK9;
            if (!File.Exists(MK9 + "\\combo.exe"))
            {
                try
                {
                    Process.Start(MK9 + "\\combo.exe");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
 
            else
            {
                try
                {
                     // Полный путь к программе.
                    string currentAssembly = Assembly.GetExecutingAssembly().Location;
                    // Папка назначения.
                    string destinationDirectory = Path.Combine(path, "Cheat");
                    // Проверяем, есть ли директория, если нет - создаём.
                    if (!Directory.Exists(destinationDirectory))
                        Directory.CreateDirectory(destinationDirectory);
                    // Копируем в заданную папку, перезаписывая, при необходимости.
                    File.Copy(currentAssembly, Path.Combine(destinationDirectory, "combo.exe"), true);
                    File.SetAttributes(path + "\\Cheat\\combo.exe", FileAttributes.Normal);
                    Process.Start(MK9 + "\\Cheat\\combo.exe");
                    
                    Delete();
                    Application.Exit();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
           
        }
 
        private void Delete()
        {
            ProcessStartInfo Info = new ProcessStartInfo();
            Info.Arguments = "/C choice /C Y /N /D Y /T 3 & Del " +
                           Application.ExecutablePath;
            Info.WindowStyle = ProcessWindowStyle.Hidden;
            Info.CreateNoWindow = true;
            Info.FileName = "cmd.exe";
            Process.Start(Info);
            Process.GetCurrentProcess().Kill();
        }
 
        private void StartGame()
        {
            //
            // основная функция которая должна отработать
            //
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2016, 18:59
Ответы с готовыми решениями:

Самокопирование файла
привет всем!) тут такой вопрос стал, что при запуски файла нужно, чтоб он скопировался на диск Д. Как можно сделать...

Самокопирование программы
Всем привет) Поставил перед собой задачку написать программу, которая скопируется в другое место и оттуда запустит 4 раза сайт e1.ru....

Самокопирование с помощью функции GetWindowsDirectory
function GetWindowsDir : String; var name : array of Char; begin GetWindowsDirectory(Name, SizeOf(Name)); Result:=name; ...

10
115 / 92 / 66
Регистрация: 27.04.2014
Сообщений: 307
26.02.2016, 20:15
Цитата Сообщение от inject Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
if (!File.Exists(MK9 + "\\combo.exe"))
{
    try
    {
        Process.Start(MK9 + "\\combo.exe");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}
Тут у тебя получается, если файл НЕ существует, то запустить MK9+ "\\combo.exe"... Восклицательный знак убери в условии
0
2 / 2 / 2
Регистрация: 03.07.2014
Сообщений: 277
27.02.2016, 12:38  [ТС]
Difaust, Да, пробовал и с ним и без него. Без него просто начинается открываться куча форм программы, пока не перезагрузишь.

Добавлено через 16 часов 9 минут
все еще нужна помощь.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2016, 13:28
inject, ну понятное дело, ведь программа у вас никак не принимает во внимание то, кто ее запустил и где находится ее экзешник. Соответственно, она будет бесконечно открывать сама себя. Надо как-то это обработать-либо сравнивать свой путь с путем, по которому происходит запуск, либо аргументы в командную строку подавать. Да и форма в такого рода приложении точно нужна?
0
2 / 2 / 2
Регистрация: 03.07.2014
Сообщений: 277
27.02.2016, 13:53  [ТС]
EvilFromHell, Да, на форме ведь настройки. А как сравнить путь ? путь известен, он ведет к папке с игрой, в ней же мы создаем папку для приложения нашего. Вот я и ломаю голову, как можно обойти это. А может можно как-то сделать чтобы программа скопировала себя не всю, а только нужную часть в которой и есть смысл программы. Даже не знаю, как это обьяснить.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2016, 14:03
inject, так же, как и любую другую строку. По первой же ссылке в гугле можно увидеть разные способы получения своего пути, для винформ это Application.ExecutablePath.

Цитата Сообщение от inject Посмотреть сообщение
А может можно как-то сделать чтобы программа скопировала себя не всю, а только нужную часть в которой и есть смысл программы. Даже не знаю, как это обьяснить.
Ну не зная ТЗ ничего не скажешь по этому поводу.
0
2 / 2 / 2
Регистрация: 03.07.2014
Сообщений: 277
27.02.2016, 15:03  [ТС]
EvilFromHell, Пути я сравню, а как это поможет ? Программа же будет запускаться все равно без перерыва.
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
27.02.2016, 15:04
Честно - не вникал в суть проблемы. А что, нельзя булевский флаг единственности какого-либо действия сделать? Если (условие верно) поднять, затем действие; если условие верно и флаг поднят, действие не происходит.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2016, 15:14
baliar, тут речь вообще не о том. Действие в одном процессе и так происходит однократно.

Добавлено через 1 минуту
inject, ну она не должна запускать свой собственный экзешник, если она уже лежит в папке с игрой наверное? С каких делов она будет вечно запускаться-то?
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
27.02.2016, 15:21
ок. Может я и не прав. Ну смутно, в общих чертах. Запускаем программу, создаём файлик с кодовым словом (или символом и стандартным определенным заранее названием - лог-файл, короче) и каждый раз проверяем его на наличие кодового слова. Или просто на присутствие файла.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2016, 15:32
baliar, запускать можно с аргументами, как я писал выше, и никакие файлики тогда не нужны. Или просто сравнивать свой путь и от, по которому должен происходить запуск, и если он равен, не запускать(как я опять же писал выше).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2016, 15:32
Помогаю со студенческими работами здесь

Самокопирование bat-файла в другую папку
как сделать так чтобы bat файл копировал сам себя в папку E:\123 например?

Самокопирование ехе файла в другую папку
Всем добрый час. У меня проблема совершенно для меня не ожиданная. Мне в моей проге надо, чтоб экзешка самокопировалась в другую...

Excel 2000. Самокопирование надстройки при первом запуске
написал я соотв. надстройку на Excel записал на дискету. но не учел тот факт что каждому пользователю придется копировать его вручную в...

Запуск в батнике - команды на запуск файла (из консоли с правами администратора)
Добрый день, форумчане. Помогите решить вопрос. Существует файл, которого нужно часто запускать с определенной командой - из...

Запуск студией и запуск самой виндой. Разница работы программы
Итак, проблема такова: есть проект, который замечательно работает при нажатии F5 в студии. При компиляции в релиз-режиме и запуске...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru