Member 14484086 Ответов: 1

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


С помощью этого кода я могу предотвратить дублирование приложения с именем, указанным в коде, от запуска.

Но после того, как приложение создано, имя этого приложения (exe) может быть изменено и запущено несколько раз на одной и той же машине.

Как предотвратить его запуск ?

Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Text = "Demo";
            int ac = System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Count();
            if (ac > 1)
            {
                MessageBox.Show("Application Already Running");
                this.Close();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello World");
        }
    }
}

1 Ответов

Рейтинг:
1

Smith is me

Самый лучший подход-это к нам Мьютекс Класса (Система.Продевать Нитку) | Майкрософт Документы[^]Взаимное исключение.


0x01AA

Не знаю, почему это было понижено, но у меня есть 5.
Ваш подход очень хорош, мы тоже используем его.
Вероятно, вам следует объяснить идею, стоящую за этим, немного более подробно (для одноклеточных downvoters, не дающих никаких комментариев по downvote), а не только поставить ссылку ;)

RickZeeland

Мой 5 тоже :)

0x01AA

ОП: получите здесь основную идею о том, что предложил @smithisme
c# - предотвращение нескольких экземпляров данного приложения в .NET? - переполнение стека[^]

Вы можете изменить/расширить это различными способами, например, не показывать сообщение, а вывести на передний план уже запущенный экземпляр.