powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запретить запуск программы два раза
25 сообщений из 53, страница 2 из 3
Запретить запуск программы два раза
    #39646100
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_По теме - открывается сокет на прослушку у все. Второй сокет уже не откроется, а по сокету можно еще и команду послать
Как вариант, спасибо.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646104
По теме
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,открывается сокет на прослушку и ...может не хватить прав
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646151
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.05.2018 13:50, stells2 пишет:
Код: sql
1.
>   if (result = TRUE) then



ах, кАкая прЭлесть!!!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646156
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это классика. :)
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646168
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
А что вы хотели, когда кому то надо показать что оно действительно таки труе?
Ладно это еше паскаль, на С-подобных без жестких типов, там вообще многие в ступор входят, глядя на некоторые не объяснимые для них но такие простые вещи.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646169
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Javascript в этом плане особенно "хорош".
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646193
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По теме_Vasilisk_,открывается сокет на прослушку и ...может не хватить правПример в студию. С какой ошибкой отваливается bind на адрес 127.0.0.1?
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646211
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_С какой ошибкой отваливается bind на адрес 127.0.0.1?
Не знаю (в контексте прав).
Но вот в случае, если кто-то уже поднял сервер на этом адресе, то подозреваю, что случится "Обычно разрешается одно использование адреса сокета (протокол/сетевой адрес/порт) (10048)"
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646222
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_По теме - открывается сокет на прослушку у все. Второй сокет уже не откроется, а по сокету можно еще и команду послатьМожет и первый не открытся.
Есть не нулевые шансы что данный сокет кто-то до вас уже открыл. ;)
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646224
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockНо вот в случае, если кто-то уже поднял сервер на этом адресе, то подозреваю, что случится "Обычно разрешается одно использование адреса сокета (протокол/сетевой адрес/порт) (10048)"Правильно. На этом и основана проверка уникальности. Наша задача - выбрать уникальный порт
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646227
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_makhaonмьютекс надо делать именованным и с приставкой Global, тогда будет видно везде.Для создания глобального объекта может не хватить прав.
SECURITY_DESCRIPTOR надо создать просто.
Как вариант:
Код: pascal
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.
function CreateGlobalEvent: THandle;
var
  pSD: PSECURITY_DESCRIPTOR;
  sa: SECURITY_ATTRIBUTES;
begin
  Result := 0;
  pSD := PSECURITY_DESCRIPTOR( LocalAlloc( LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH ) );
  if not Assigned( pSD ) then
    Exit;

  try
    if not InitializeSecurityDescriptor( pSD, SECURITY_DESCRIPTOR_REVISION ) then
      Exit;

    if not SetSecurityDescriptorDacl( pSD, TRUE, PACL( nil ), FALSE ) then
      Exit;

    sa.nLength := sizeof( sa );
    sa.lpSecurityDescriptor := pSD;
    sa.bInheritHandle := TRUE;

    Result := CreateEvent( @sa, True, True, 'Global\MyGlobalEventName' );
  finally
    LocalFree( HLOCAL( pSD ) );
  end;
end;

...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646229
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Наша задача - выбрать уникальный порт
Ну вообще да, порт можно и в настройки вынести.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646254
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockпорт можно и в настройки вынести.
Обычно, так и делают, хотя - по топику, задача и так весьма специфична.
И это явно не вариант домашней машинки.
Честно говоря, в голову не приходит область применения, когда из разных сессий надо отслеживать. Есть примеры?

А в одной сессии - так выше уже решения простые есть, и, даже активация работающего приложения.
И тут уж действительно, может служба и проще?
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646257
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2И тут уж действительно, может служба и проще?Да, но так не интересно)
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646280
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockДа, но так не интересно)
Ради спортивного интереса - я только "ЗА" Лишний раз мозг наморщить - только плюсом к карме.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646466
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй этап - добиться переключения контекста, т.е. активации работающего приложения из другой сессии.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646506
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2Второй этап - добиться переключения контекста, т.е. активации работающего приложения из другой сессии.Это не возможно сделать по разным причинам, т.ч. можно не начинать.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646549
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockstells2Второй этап - добиться переключения контекста, т.е. активации работающего приложения из другой сессии.Это не возможно сделать по разным причинам, т.ч. можно не начинать.
Почему? Если оно будет активироваться для того пользователя, который его запустил - возможно :)
Второй вариант: прибивать то с сохранением состояния и запускать новое для текущего пользователя с восстановлением состояния на момент закрытия.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646555
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Оба из этих прелестных варианта не решают задачу
stells2Второй этап - добиться переключения контекста, т.е. активации работающего приложения из другой сессии.
"работающего"
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646744
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockSECURITY_DESCRIPTOR надо создать просто.
Как вариант:Вот моя история борьбы с глобальными объектами.

Там все не просто.
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646756
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Мне помог этот код 21417637 (для создания глобального Event. Может, не для всех объекта ядра так просто, но для Mutex думаю да)
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646818
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
Нельзя установить больше прав чем есть у владельца запускаемого процесс, иначе, смысл в этой всей "безопасности"? Любая программа, с точки зрения Windows ничем не отличается от пользователя который её запускает.

Смешно было бы, если бы юзер с минимальными правами запускал системный самописный софт с админскими правами который позволял бы менять права у пользователя ;)
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646824
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2Нельзя установить больше прав чем есть у владельца запускаемого процессМожно. Windows различает текущие права и максимально возможные права. Так у процесса может быть какая-то привилегия, но она может быть неактивна. Подробнее AdjustTokenPrivileges
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646845
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
Сейчас нет возможности проверить, а память уже потерлась малость :)
Но, если при создании мьютекса использовать флаг 21417637 MUTEX_ALL_ACCESS - и запустить с минимальными правами пользователя?
В том примере не очень понятно, под каким пользователем запускалось приложение.
Допускаю, что права могут быть полными но только на порожденные объекты родительским процессом в рамках ACL, т.е. наследование и разрешения. Хотя, может для размещения в глобальном и допустимо.
В общем, вопрос интересный, но требует проверки. :)
...
Рейтинг: 0 / 0
Запретить запуск программы два раза
    #39646846
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
Любое приложение/процесс запускается изначально с правами пользователя его запустившего. И эти права повысить можно только обладая более высокими правами (если правильно обработать исключение, то будет выполнен запрос на повышение прав). Он может управлять только создаваемыми или наследуемыми объектами.
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запретить запуск программы два раза
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]