Вверх ↑
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
#16: 2016-03-29 17:00:33 ЛС | профиль | цитата
На MSDN почитал, щас попробую
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#17: 2016-03-29 17:01:51 ЛС | профиль | цитата
Gunnman писал(а):
SharedStream.CoreName - в SharedStream и FileMapping компонентах такого не нашел

Ну ты даешь. В SharedStream это свойство
CoreName=Имя файла проекции по-умолчанию|2|
карма: 22

0
Ответов: 5227
Рейтинг: 586
#18: 2016-03-29 17:01:58 ЛС | профиль | цитата
Netspirit, уже опередил
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 655
Рейтинг: 18
#19: 2016-03-29 17:23:08 ЛС | профиль | цитата

hMMF := CreateFileMapping(hFile, nil, PAGE_READWRITE, 0, 0, "Global\"PChar(crn)); ругается на кавычки, без кавычек ругается на неизвестный идентификатор Global..


------------ Дoбавленo в 17.16:
nesco, andrestudio, такое уже пробовал...
------------ Дoбавленo в 17.23:
Пробовал Global\Mytest, "Global\Mytest","Local\Mytest",Local\Mytest ...не пашет к сожалению
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#20: 2016-03-29 17:27:07 ЛС | профиль | цитата
Gunnman писал(а):
не пашет к сожалению

Вообще не создает, или не работает как надо
карма: 22

0
Ответов: 4621
Рейтинг: 746
#21: 2016-03-29 17:32:56 ЛС | профиль | цитата
nesco, не там прописывает.
Gunnman,
nesco писал(а):
Ну ты даешь. В SharedStream это свойство CoreName

карма: 26

0
Ответов: 655
Рейтинг: 18
#22: 2016-03-29 19:12:34 ЛС | профиль | цитата
В общем все работает урраа! Всем спасибо!
Для того чтобы передать данные в службу и наоборот нужны следующие условия:

1) Отключенный UAC
2) Запуск службы от имени пользователя под которым планируется запуск приложения.
3) В CoreName указываем имя как Global\нужное имя.

До этого не получалось потому что был включен UAC.

Нюансы:
Если служба будет запущена от имени локальной системы, а приложение от имени любого пользователя, то первым - запускаем приложение, вторым - службу.
В случае если служба будет запущена от имени учетки пользователя порядок запуска не важен.

Минусы:
1) В качестве дескриптора безопасности используется nil...который согласно MSDN делает общую память доступной для всех, т.е. чужой процесс (вирус например) может натворить дел.
2) Запуск службы от имени пользователя, отключение UAC.

Прошу помочь допилить компонент SharedStream, нужно добавить создание своего дескриптора безопасности..который будет общим для приложений\служб обменивающихся данными. Подробнее описано тут https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa366537(v=vs.85).aspx и тут https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa379560(v=vs.85).aspx
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#23: 2016-03-29 23:34:13 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2021-06-21 07:42:56
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#24: 2016-03-29 23:43:52 ЛС | профиль | цитата
195.16.111.220 писал(а):
добавите эту информацию в описание компонента? думаю будет не лишней

Работа в службах не является основной функцией компонента SharedStream
карма: 22

0
Ответов: 824
Рейтинг: 138
#25: 2016-03-30 13:40:58 ЛС | профиль | цитата
Gunnman, Вот теперь, зная о Ваших изысканиях, ни за что не стану использовать Ваши программы.
Может нужно еще и антивирус отключить? Ну так для надежности, что би Ваши сервисы работали.
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#26: 2016-03-30 13:50:03 ЛС | профиль | цитата
Я тоже не сторонник использования общей памяти в качестве обмена между сервисом и приложением. Нормальные люди для этого используют именно сокеты.
карма: 22

1
Голосовали:sashaoli
Ответов: 655
Рейтинг: 18
#27: 2016-04-01 11:28:40 ЛС | профиль | цитата
sashaoli писал(а):
Gunnman, Вот теперь, зная о Ваших изысканиях, ни за что не стану использовать Ваши программы.
Может нужно еще и антивирус отключить? Ну так для надежности, что би Ваши сервисы работали.


Ну так я же написал, что это потому что общий дескриптор безопасности NULL, если бы он был указан по правилам (ссылки я выкладывал), то все работало бы правильно без отключения UAC и без расшаривания памяти кому попало. Я всего лишь проверил возможность обмена информацией между сервисом и приложением. Собственно DDE и COM и рекомендуется для обмена сообщениями между приложениями, но увы наш DDE в службе не пашет, а COM'а нет. Так что не надо тут с нападками, наоборот считаю что "мои изыскания" как в раз в данном случае полезны, народ будет знать что при таком использовании SharedStream в приложении получается дырка.
п.с. я же описал все + и - , в минус как раз есть
"1) В качестве дескриптора безопасности используется nil...который согласно MSDN делает общую память доступной для всех, т.е. чужой процесс (вирус например) может натворить дел.
2) Запуск службы от имени пользователя, отключение UAC."

Так что я предупреждал, а не рекомендовал к использованию.

карма: 0

0
Ответов: 824
Рейтинг: 138
#28: 2016-04-02 20:27:11 ЛС | профиль | цитата
Gunnman, Дело в том, что практически все приложения Windows могут использовать общую память (расшаренную) и большое количество используют в целях передачи информации
О как!
И вот как используют - OutputDebugString('Здесь у меня что-там'), то-есть для отладки.
И вот этот код, в программе, посылает строчку 'Здесь у меня что-там' в общую память, а отладчик читает эту самую память и выводить строки на экран(пишет лог)...
карма: 1

0
Ответов: 655
Рейтинг: 18
#29: 2016-04-03 20:55:13 ЛС | профиль | цитата
sashaoli, А есть примерчик? )))
карма: 0

0
Ответов: 824
Рейтинг: 138
#30: 2016-04-03 21:06:41 ЛС | профиль | цитата
Gunnman писал(а):
sashaoli, А есть примерчик? )))
DebugEx
ODSReceiver (Capture OutputDebugString)
карма: 1

1
Голосовали:Gunnman
Сообщение
...
Прикрепленные файлы
(файлы не залиты)