Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Есть такая известная всем функция Win32 API - CreateEvent. https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682396(v=vs.85).aspx Пишу код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Запускаю две программы одновременно. Теоретически, первый экземпляр приложения должен вывести new, второй - exist. Под Windows 7, в одной сессии так и есть. Но под Windows 8.1 - нет! Оба пишут new. Таки да, с появлением терминального сервера появились правила разделения нэймспейсов именованных объектов. Вот тут написано: https://msdn.microsoft.com/en-us/library/aa382954(v=vs.85).aspx Но у меня-то объект с именем Global\! Т.е. должен обнаруживаться! То же самое и терминальными сессиями. На Windows 7 - одно приложение запускаю под одним пользователем, второе - под другим. Оба пишут new. В чём засада, подскажите, уже весь мозг сломал! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 11:49 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thВ чём засада, подскажите, уже весь мозг сломал! Ты не проверяешь на другие ошибки, так что если получил ERROR_ACCESS_DENIED, выводишь "New". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 12:09 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, ну, у меня тут уже дерево из 50 условий, в т.ч. с проверкой ERROR_ALREADY_EXISTS, ERROR_ACCESS_DENIED, ERROR_INVALID_HANDLE, с использованием OpenEvent с разными флагами и т.д.. Общая фишка такая - в рамках одной сессии ещё кое-как можно обмениваться событиями. Между сессиями - никак, даже с административными правами и включением SeDebugPrivelege. А нужно - именно между сессиями в терминальном сервере, и что бы работало на XP, 7, 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 12:38 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thдаже с административными правами и включением SeDebugPrivelege. А нужно - SeCreateGlobalPrivilege. Проще всего этого добиться - запустить оба приложения "As Administrator". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 12:50 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Я ж написал - as administrator не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 12:51 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПроще всего этого добиться - запустить оба приложения "As Administrator". это слишком сильное требование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:09 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Задам более общий вопрос. Как узнать, что приложение уже запущено на данном компьютере? Метод должен работать на XP, 7, 8. В одной локальной или через несколько терминальных сессий. Должны обнаруживаться даже зависшие экземпляры приложений. Должно работать без административных прав. Понятно, что метод "с созданием файлика" не годится, нужно что-то посерьёзнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:20 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
socket()+bind()+listen() Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:29 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thПонятно, что метод "с созданием файлика" не годится, нужно что-то посерьёзнее. Почему не годится? При первом запуске создавайте файлик с ID процесса. При последующих запусках читайте файл и проверяйте существует ли процесс с таким ID. Весь юниксовый мир использует эту технику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:35 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВесь юниксовый мир использует эту технику. Не совсем. ID процесса не проверяется, файл просто лочится на запись. Но у них есть стандарт на структуру каталогов и гарантированное место с разрешением на запись. На винде всё хуже. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 13:55 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНе совсем. ID процесса не проверяется, файл просто лочится на запись. Не знал, спасибо. Dimitry SibiryakovНа винде всё хуже. Ну собственно, выше по топику видно, что даже более приспособленные для этого механизмы под виндой тоже не гарантировано работают. Тогда зачем усложнять когда можно проще )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:17 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thНо у меня-то объект с именем Global\! Т.е. должен обнаруживаться! ЕМНИП где-то в политиках терминального сервера настраивается будет ли Global глобальным для всех терминальных сессий. По дефолту это отключено, т.е. Global\ одной терминальной сессии не виден в другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:24 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyТогда зачем усложнять когда можно проще )) Затем, что проще - нельзя. Нет на винде заранее известного общего каталога с гарантированными разрешениями на создание файла любым пользователем. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:28 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thПонятно, что метод "с созданием файлика" не годится, нужно что-то посерьёзнее. Самый надежный метод быть уверенным что прогу никто не запустит дважды. Работает как в терминале, так и по сети. При входе открываешь файлик на запись и держишь открытым, при выходе закрываешь и удаляешь. Второй открыть не сможет. Если прога вылетит - ОС файлик закроет, в следующий запуск факт наличия файлика оповестит что прога вылетела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 14:31 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima T, я проверял в обычной свежеустановленной Windows 7, там никто никаких гаек в терминальной сессии не закручивал. Созданные объекты с префиксом Global не находятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:12 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky13thПонятно, что метод "с созданием файлика" не годится, нужно что-то посерьёзнее. Почему не годится? При первом запуске создавайте файлик с ID процесса. При последующих запусках читайте файл и проверяйте существует ли процесс с таким ID. Весь юниксовый мир использует эту технику. А если приложение зависнет? Его сняли, и под этим ID запустился блокнот. Fail! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:13 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima T13thПонятно, что метод "с созданием файлика" не годится, нужно что-то посерьёзнее. Самый надежный метод быть уверенным что прогу никто не запустит дважды. Работает как в терминале, так и по сети. При входе открываешь файлик на запись и держишь открытым, при выходе закрываешь и удаляешь. Второй открыть не сможет. Если прога вылетит - ОС файлик закроет, в следующий запуск факт наличия файлика оповестит что прога вылетела. Думаешь, программа, реализующая этот алгоритм получит сертификат "Windows 8-ready?" (: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:19 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thDima T, я проверял в обычной свежеустановленной Windows 7, там никто никаких гаек в терминальной сессии не закручивал. Созданные объекты с префиксом Global не находятся. Я писал про серверные виндовсы, возможно в 7-ке все точно также по дефолту, но только настраивать негде. Я использовал mutex с именем Global\... для синхронизации между терминальными сессиями в Win2000 Server. Все отлично работало, пока админы не решили на 2003 пересесть. Там перестало работать. Нашли какую-то настройку в политиках, отключили/переключили - заработало. Что, где - не помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:23 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thDima Tпропущено... Самый надежный метод быть уверенным что прогу никто не запустит дважды. Работает как в терминале, так и по сети. При входе открываешь файлик на запись и держишь открытым, при выходе закрываешь и удаляешь. Второй открыть не сможет. Если прога вылетит - ОС файлик закроет, в следующий запуск факт наличия файлика оповестит что прога вылетела. Думаешь, программа, реализующая этот алгоритм получит сертификат "Windows 8-ready?" (: Зачем он нужен? Надо отталкиваться от того какие общие ресурсы использует прога. Тебе же не прогу надо однократно запустить, а однократно выполнить какую-то обработку данных. Если это какая-то файловая база - создай там файл. Если СУБД - используй средства СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:39 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
В общем, решение, похоже, такое. 1. Делаем OpenEvent с нашим ГЛОБАЛЬНЫМ именем. Если открылось - прилага уже запущена, делаем CloseHandle, выходим. 2. Если не открылось, и код ошибки ERROR_ACCESS_DENIED - мы в 7, 8, прилага открыта в другой сессии, выходим 3. Если не открылось, и код ошибки ERROR_FILE_NOT_FOUND - мы самые первые, делаем CreateEvent, запускаемся. Проверил в XP, Server 2003, 7, 8, 8.1 работает. Надо бы ещё в Server 2012. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:41 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima TНадо отталкиваться от того какие общие ресурсы использует прога. Тебе же не прогу надо однократно запустить, а однократно выполнить какую-то обработку данных. Если это какая-то файловая база - создай там файл. Если СУБД - используй средства СУБД. Общий ресурс - legacy функционал, под многопользование не заточенный. Отказаться от него - не вариант. "Создание там файла" не проходит по причине, в пятый раз пишу, "кто его удалит, если прилага зависнет?". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:44 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thОбщий ресурс - legacy функционал, под многопользование не заточенный. Отказаться от него - не вариант. "Создание там файла" не проходит по причине, в пятый раз пишу, "кто его удалит, если прилага зависнет?". Не надо его удалять если прога зависнет. Это прочитал? Dima TСамый надежный метод быть уверенным что прогу никто не запустит дважды. Работает как в терминале, так и по сети. При входе открываешь файлик на запись и держишь открытым, при выходе закрываешь и удаляешь. Второй открыть не сможет. Если прога вылетит - ОС файлик закроет, в следующий запуск факт наличия файлика оповестит что прога вылетела. Не надо его к процессам привязывать. Просто назови my_proga_is_work.flg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:50 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima TНе надо его удалять если прога зависнет. Это прочитал? Это я прочитал. Dima T13thДумаешь, программа, реализующая этот алгоритм получит сертификат "Windows 8-ready?" (: Зачем он нужен? У нас серьёзный продукт. Сертификат - нужен. Механизм с файлом - не серьёзно, тут не unix. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 15:55 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thDima Tпропущено... Самый надежный метод быть уверенным что прогу никто не запустит дважды. Работает как в терминале, так и по сети. При входе открываешь файлик на запись и держишь открытым, при выходе закрываешь и удаляешь. Второй открыть не сможет. Если прога вылетит - ОС файлик закроет, в следующий запуск факт наличия файлика оповестит что прога вылетела. Думаешь, программа, реализующая этот алгоритм получит сертификат "Windows 8-ready?" (: Да нормуль способ. Юниксы так делают часто. Я-бы попробовал вместо файла создавать объекты видимые в поле зрения ОС (Mutex например). Пыщ до кучи http://nsis.sourceforge.net/Check_whether_your_application_is_running ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 16:31 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thМеханизм с файлом - не серьёзно, named pipe тогда используйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 16:37 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thУ нас серьёзный продукт. Сертификат - нужен. Так чё ж вы, такие все из себя сурьёзные, задаёте этот вопрос на форуме вместо того чтобы обратиться прямо в техподдержку Windows?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 16:38 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
mayton(Mutex например мьютекс и шаред мемори - у них те же фокусы с local/global и правами на global ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 16:38 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Надо смотреть в смыслы. Если они решают вопрос лицензионной чистоты - то его можно решать на стороне сервера. Тоесть вести учёт одновременных коннектов и бить по рукам за превышение лимита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 16:43 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Изопропилnamed pipe тогда используйте С именованными трубками засада: серверную сторону свободно могут открыть сразу несколько процессов. TCP сокеты, про которые я говорил выше, такого не позволят. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 16:50 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТак чё ж вы, такие все из себя сурьёзные, задаёте этот вопрос на форуме вместо того чтобы обратиться прямо в техподдержку Windows?.. Пробовал. Там пц как долго всё. Спасибо что позвонили, ваш звонок очень важен для нас... и так дня на 3, пока первый чеволек хоть чтнб ответит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 17:06 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovсерверную сторону свободно могут открыть сразу несколько процессов а как же создание с FILE_FLAG_FIRST_PIPE_INSTANCE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 17:20 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Еще маилслоты есть. Они вроде не должны открываться в нескольких экземплярах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 19:02 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima TЕще маилслоты есть. Они вроде не должны открываться в нескольких экземплярах. Странная штука. Никогда не использовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 19:09 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
mayton, да уж, мутант однозначно этот на весь домен работать будет авторThese messages are typically sent over a network to either a specified computer or to all computers in a specified domain. A domain is a group of workstations and servers that share a group name. автору кажется такое не пойдёт авторA mailslot is a mechanism for one-way interprocess communications (IPC). Applications can store messages in a mailslot. опять мелкомягкие чудят, лучше такое не использовать простенько сокет открыть с доступом только из локалхост и не жужжать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 21:47 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)простенько сокет открыть с доступом только из локалхост и не жужжать А вот это не сработает. На терминальном сервере у каждого терминала свой localhost. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 22:20 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovу каждого терминал winstation официально называется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 23:16 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovkealon(Ruslan)простенько сокет открыть с доступом только из локалхост и не жужжать А вот это не сработает. На терминальном сервере у каждого терминала свой localhost. ну тогда формально это уже синхронизация нескольких компов и должен быть комп-диспетчер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2015, 21:26 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Ну что тринадцатый? Придумал как ловить нарушителей лицензий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 00:28 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)mayton, да уж, мутант однозначно этот на весь домен работать будет авторThese messages are typically sent over a network to either a specified computer or to all computers in a specified domain. A domain is a group of workstations and servers that share a group name. Чего смутило? или гугл-переводчик страшно перевел? Маилслоты это надстройка над UDP, поэтому можно слать как на конкретный комп, так и широковещательно по всей локалке. Про это написано. kealon(Ruslan)автору кажется такое не пойдёт Автору вобще слать ничего не надо. Он проверяет возможность создания именованного event`а как флаг того что программа запущена. Тут тоже самое. Затестил, работает в терминале W7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 07:16 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Как устроена адресация в маилслотах https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365147(v=vs.85).aspx ... lpName [in] The name of the mailslot. This name must have the following form: \\.\mailslot\[path]name The name field must be unique. The name may include multiple levels of pseudo directories separated by backslashes. For example, both \\.\mailslot\example_mailslot_name and \\.\mailslot\abc\def\ghi are valid names. ... To write a message to a mailslot, a process uses the CreateFile function, specifying the mailslot name by using one of the following formats. Format Usage \\.\mailslot\name Retrieves a client handle to a local mailslot. \\computername\mailslot\name Retrieves a client handle to a remote mailslot. \\domainname\mailslot\name Retrieves a client handle to all mailslots with the specified name in the specified domain. \\*\mailslot\name Retrieves a client handle to all mailslots with the specified name in the system's primary domain. т.е. слушать можно только на своем компе, а отправлять на свой (считай через localhost), на конкретный комп, домен или вообще на все в локалке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 07:37 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Или я не совсем понял задачу, или не совсем понял почему не рассматривается вариант WMI запроса к списку процессов на интересующей машине. Первая попавшаяся статья на тему WMI и процессов . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 13:56 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima TЧего смутило? или гугл-переводчик страшно перевел? Маилслоты это надстройка над UDP, поэтому можно слать как на конкретный комп, так и широковещательно по всей локалке. Про это написано. заметь, в одну сторону и негарантировано ну и нафига, чем напрямую UDP не катит? тож самое тока кода чуть поболе будет и админам проще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 14:43 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima TМаилслоты это надстройка над UDP Да щаззз. Эта штука, как и именно ванные трубки - более высокого уровня и может ходить по любому протоколу. Хотя обычно ходит по TCP. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 14:56 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDima TМаилслоты это надстройка над UDP Да щаззз. Эта штука, как и именно ванные трубки - более высокого уровня и может ходить по любому протоколу. Хотя обычно ходит по TCP. Читам: https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365130(v=vs.85).aspx The data in a mailslot message can be in any form, but cannot be larger than 424 bytes when sent between computers. ... Mailslots can broadcast messages ... To send messages that are larger than 424 bytes between computers, use named pipes or Windows Sockets instead. https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365576(v=vs.85).aspx One important consideration is that mailslots broadcast messages using datagrams. A datagram is a small packet of information that the network sends along the wire. Like a radio or television broadcast, a datagram offers no confirmation of receipt; there is no way to guarantee that a datagram has been received. Ничем UDP не напоминает? Ограниченный размер сообщения, возможность широковешательной рассылки, негарантированая доставка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 16:51 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)ну и нафига, чем напрямую UDP не катит? тож самое тока кода чуть поболе будет и админам проще Мне например пригодилось , чтобы админов не напрягать открытием портов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2015, 17:01 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Dima Tkealon(Ruslan)ну и нафига, чем напрямую UDP не катит? тож самое тока кода чуть поболе будет и админам проще Мне например пригодилось , чтобы админов не напрягать открытием портов. т.е. ещё и дыра в безопасности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 09:15 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Dima Tпропущено... Мне например пригодилось , чтобы админов не напрягать открытием портов. т.е. ещё и дыра в безопасности? Ну в чем дыра-то? Про дыры там напиши, а то все какими-то мифическими дырами пугают, а конкретики никакой. Только сначала почитай, а то там уже много не в тему понаписали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 09:25 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
maytonНу что тринадцатый? Придумал как ловить нарушителей лицензий? Я не нарушителей лицензий ищу. Но вообще - да, задачу решил. Я ж вверху написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 12:02 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
ART-CODEИли я не совсем понял задачу, или не совсем понял почему не рассматривается вариант WMI запроса к списку процессов на интересующей машине. Первая попавшаяся статья на тему WMI и процессов . Без админских прав не определяются имена в соседней сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2015, 12:05 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Может пригодится кому. Разбирался с той же проблемой. Объекты с именем Global\ работают из разных сессий, но надо дополнительно давать права доступа. Копать в сторону параметра LPSECURITY_ATTRIBUTES lpEventAttributes. На C# работает Код: c# 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2015, 09:34 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
13thВ общем, решение, похоже, такое. 1. Делаем OpenEvent с нашим ГЛОБАЛЬНЫМ именем. Если открылось - прилага уже запущена, делаем CloseHandle, выходим. 2. Если не открылось, и код ошибки ERROR_ACCESS_DENIED - мы в 7, 8, прилага открыта в другой сессии, выходим 3. Если не открылось, и код ошибки ERROR_FILE_NOT_FOUND - мы самые первые, делаем CreateEvent, запускаемся. Проверил в XP, Server 2003, 7, 8, 8.1 работает. Надо бы ещё в Server 2012. Вот потому-то в последнее время использую "Windows API замещение" в пользу сторонних библиотек, которые работают адекватно в любой версии то-ли Windows, то-ли Linux ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2015, 09:52 |
|
||
|
Вот это номер! CreatEvent - не работает!
|
|||
|---|---|---|---|
|
#18+
Вот тут пишут. Может поможет. https://msdn.microsoft.com/en-us/library/ms682418(v=vs.85).aspx The name can have a "Global\" or "Local\" prefix to explicitly create the object in the global or session namespace. The remainder of the name can contain any character except the backslash character (\). For more information, see Kernel Object Namespaces. Fast user switching is implemented using Terminal Services sessions. Kernel object names must follow the guidelines outlined for Terminal Services so that applications can support multiple users. The object can be created in a private namespace. For more information, see Object Namespaces. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2015, 11:57 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018709]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 288ms |
| total: | 472ms |

| 0 / 0 |
