Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2017, 13:56   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Запрет на повторный запуск приложения

Здравствуйте. Я эту тему уже видел на этом форуме - тут советуют использовать Mutex; это вроде как то, что мне нужно - хочется блокировать запуск даже в том случае, если исполняемый (exe) файл был переименован.
Но, сюда бы я не писал, если бы не было проблем ... Прикрутил всё как указано по ссылке - и не работает. Что я не так сделал ?
К тому же не понятно, что за appGuid.
И да, такой метод может позволить мне получить объект Process, который собственно был запущен повторно ? Или хотя бы путь к исполнимому файлу ...
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 04.02.2017, 14:08   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

http://www.delphimaster.ru/articles/limit.html
В качестве имени мьютекса вместо имени файла во втором случае какую-то длинную замысловатую строку. Мало вероятно, что какая-то прога тоже такое имя использует, но все же вероятность больше 0

Ой не обратил внимания, что шарп )) Но идея та же
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.02.2017 в 14:11.
Аватар вне форума Ответить с цитированием
Старый 04.02.2017, 16:32   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

От чё работает почти так, как мне нужно:
Код:
bool result;
from_original=new Mutex(false,"MutexFlag_DebugData_bla-bla-bla",out result); // переменная Mutex from_original держится в глобалке, для уверенности, что её сборщик мусора не скушает
if (!result)
{
	// дублированный запуск
} else {}
Единственное что не позволено - узнать владельца мютекса (процесс, или исполнимый файл), если result==false ... Или я чего то не знаю ...
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 08.02.2017, 13:37   #4
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

OmegaBerkut пара маленьких дополнений.
1. Если у тебя программу одновременно запустить в двух экземплярах, есть вероятность, что каждая из программ посчитает что другая уже запущена. Для этого в сниппете заведён ещё один мутекс, который подрабатывает локом.
2. Если программу запускать от разных пользователей то они могут и не увидеть локов. Явно заданные права на доступ к локу тоже не помешают.

Код:
public bool IsProgramAlreadyStarted()
{
	var securitySettings = new MutexSecurity();
	var allowEveryoneRule = new MutexAccessRule(
		new SecurityIdentifier(WellKnownSidType.WorldSid, null),
		MutexRights.FullControl,
		AccessControlType.Allow);
	securitySettings.AddAccessRule(allowEveryoneRule);

	bool isNewLock;
	using (var mutexLock = new Mutex(false, MutexNameLock, out isNewLock, securitySettings))
	{
		try
		{
			mutexLock.WaitOne();

			bool isNew;
			using (var mutex = new Mutex(false, MutexName, out isNew, securitySettings))
				return !isNew;
		}
		finally
		{
			mutexLock.ReleaseMutex();
		}
	}
}
the_deer_one вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет на запуск *.exe файлов из Opera octoplar Безопасность, Шифрование 3 18.01.2015 09:24
Повторный запуск программы lev_ Помощь студентам 2 13.12.2014 11:39
запрет на запуск программы (delphi) Johny91 Помощь студентам 4 21.03.2012 11:26
Повторный запуск формы в Delphi art.marked Помощь студентам 3 05.01.2012 23:47
Открытие файлов и повторный запуск программы m0dE^ Общие вопросы Delphi 9 03.08.2011 20:45