Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
#1

Как получить название своего приложения?

24.02.2017, 00:36. Просмотров 1093. Ответов 20
Метки нет (Все метки)

Сделал так называемое самоудаление своего приложения по окончанию его работы. Но проблема в том, что если его переименовать, то оно не удалится, в примере кода должно быть все ясно.
Как можно получить название своего файла не зависимо от его расположения в системе?

C#
1
2
3
4
5
6
7
8
9
StreamWriter sw = new StreamWriter(@"file.bat");
            sw.WriteLine("@echo off");
            sw.WriteLine("timeout 1");
            sw.WriteLine("del file.exe");
            sw.WriteLine("del file.bat");
            sw.Close();
 
            Thread.Sleep(500);
            Process.Start(@"file.bat");
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2017, 00:36
Ответы с готовыми решениями:

Как установить новую тему своего приложения
Здравствуйте! Как поставить тему на форму??? Не на саму среду Microsoft Visual...

Как установить иконку для своего приложения
Добрый день! Подскажите пожалуйста как приложению задать иконку. Оно ставиться...

Как программно нажать клавишу F5 для обновления рабочего стола из своего приложения?
Есть ли метод или функция эмулирующая нажатие клавиши F5 для обновления...

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

Как извлечь файл из своего приложения в папку?
Собственно есть такой вопрос, только совсем не пониманию как это работает... В...

20
Lexeq
622 / 535 / 392
Регистрация: 21.01.2014
Сообщений: 1,467
Завершенные тесты: 2
24.02.2017, 00:49 #2
Узнать путь к исполняемому файлу приложения
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 00:56 #3
C#
1
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
1
Andrew_Montana
33 / 33 / 37
Регистрация: 12.10.2014
Сообщений: 214
24.02.2017, 00:59 #4
Лучший ответ Сообщение было отмечено DmitryAllen как решение

Решение

C#
1
2
3
4
5
6
7
8
9
            StreamWriter sw = new StreamWriter(Environment.CurrentDirectory + @"\file.bat");
            sw.WriteLine("@echo off");
            sw.WriteLine("timeout 1");
            var exe = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
            sw.WriteLine("del {0}.exe", exe);
            sw.WriteLine("del file.bat");
            sw.Close();
            Thread.Sleep(500);
            Process.Start(@"file.bat");
1
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 00:59  [ТС] #5
MansMI, спасибо, то что нужно)
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 00:59 #6
C#
1
Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory);
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 10:44  [ТС] #7
Вот я подобрал идеальное решение, думаю кому-то пригодится
C#
1
2
3
4
5
6
7
8
9
10
11
StreamWriter sw = new StreamWriter(@"rem.bat");
            sw.WriteLine("@echo off");
            sw.WriteLine("chcp 65001");
            sw.WriteLine("timeout 1");
            var exe = '"' + AppDomain.CurrentDomain.FriendlyName + '"';
            sw.WriteLine("del {0}", exe);
            sw.WriteLine("del rem.bat");
            sw.Close();
 
            Thread.Sleep(500);
            Process.Start(@"rem.bat");
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 10:51 #8
и в какое событии это вставлено?
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 11:22  [ТС] #9
MansMI, в обычную функцию которая вызывается в самом конце
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 13:05 #10
и что, работает?
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 14:26  [ТС] #11
MansMI, естественно, у меня все работает
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 16:10 #12
тогда, казалось бы, чего уж проще:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        static void Main(string[] args)
        {
            using (StreamWriter sw = new StreamWriter(@"rem.bat"))
            {
                sw.WriteLine("@echo off");
                sw.WriteLine("chcp 65001");
                sw.WriteLine("timeout 1");
                sw.WriteLine("del "{0}"", AppDomain.CurrentDomain.FriendlyName);
                sw.WriteLine("del rem.bat");
            }
            Thread.Sleep(500);
            Process.Start("rem.bat");
        }
но оба файла живы, и если просто bat из проводника запустить ничего не происходит
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 16:16  [ТС] #13
MansMI,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System.Diagnostics;
using System.IO;
using System.Threading;
 
 
StreamWriter sw = new StreamWriter(@"rem.bat");
            sw.WriteLine("@echo off");
            sw.WriteLine("chcp 65001");
            sw.WriteLine("timeout 1");
            var exe = '"' + AppDomain.CurrentDomain.FriendlyName + '"';
            sw.WriteLine("del {0}", exe);
            sw.WriteLine("del rem.bat");
            sw.Close();
 
            Thread.Sleep(500);
            Process.Start(@"rem.bat");
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 16:26 #14
да тож самое разумеется
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 16:28  [ТС] #15
MansMI, у вас в примере есть ошибки, попробуйте просто вставить то что я написал и запустить
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 16:34  [ТС] #16
MansMI, у меня все отлично работает
0
Миниатюры
Как получить название своего приложения?  
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 16:38 #17
да и у меня тож самое:
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
using System;
using System.IO;
using System.Diagnostics;
using System.Threading;
 
namespace Eraser
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamWriter sw = new StreamWriter(@"rem.bat");
            sw.WriteLine("@echo off");
            sw.WriteLine("chcp 65001");
            sw.WriteLine("timeout 1");
            var exe = '"' + AppDomain.CurrentDomain.FriendlyName + '"';
            sw.WriteLine("del {0}", exe);
            sw.WriteLine("del rem.bat");
            sw.Close();
 
            Thread.Sleep(500);
            Process.Start(@"rem.bat");
        }
    }
}
ваш ехе можно? либо в rar тут, либо в файлообменнике
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 16:41  [ТС] #18
MansMI, нерабочая ссылка удалена модератором
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
24.02.2017, 16:52 #19
видимо сойдемся на том, что у вас Win64, а у меня нет
0
DmitryAllen
-20 / 1 / 1
Регистрация: 23.02.2017
Сообщений: 30
24.02.2017, 16:56  [ТС] #20
MansMI, вот эту попробуйте)
0
Вложения
Тип файла: zip ConsoleApplication2.exe.zip (3.0 Кб, 2 просмотров)
24.02.2017, 16:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2017, 16:56

Как захватить нажатие клавиш глобально, а не только с формы своего приложения
Подскажите, пожалуйста)

Как получить дату и время своего (пользовательского формата)
Всем привет. Подскажите. как получить. дату и время. своего(пользовательского...

Как с помощью HTMLAgility получить название песни и артиста?
Предположим у меня есть такой код хтмл( сайт радио рекорд) <!DOCTYPE html> ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru