Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Как дать доступ к разделенной памяти для пользовательских программ из сервиса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритмы анализа программных кодов на выявление недекларированных возможностей http://www.cyberforum.ru/cpp-beginners/thread504664.html
Помогите пожалуйсто. Необходим материал (литература, ссылки на исходные тексты анализаторов кодов) по алгоритмам анализа программных кодов на выявление недекларированных возможностей (нежелательных...
C++ Алгоритм отправки файла на почту Как осуществить оправку текстового файла допустим на 777@mail.ru Буду благадарен любой информации особенно исходникам :-) http://www.cyberforum.ru/cpp-beginners/thread504476.html
C++ Как эмулировать нажатие F3 в CBuilder?
как eмулировать нажатие F3 в CBuilder ?
Код ошибки при вызове функции через "system" C++
Операционная система типа Unix. Вызываю команду mount через system: system("mount /mnt/floppy"). В случае ошибки, результат system один и тот же, хотя варианты ошибок разные. Очень хотелось бы...
C++ MSChart: как совместить "bar" и "Line" на одной "MSChart"? http://www.cyberforum.ru/cpp-beginners/thread504353.html
Здравствуйте господа. Мне надо нарисовать 2 графика разных типов - "bar 2d" и "line 2d" используя только 1 MSChart control. 1 - VtChChartType2dBar 3 - VtChChartType2dLine
C++ Убить тройной клик в RichEdit Люди, кто работал тройной клик на тексте в CRichEditCtrl? У меня перегружается WM_LBUTTONDOWM и WM_LBTNDBLCLICK. Но в винде предусмотренно еще одно сообщение (или есть какой-то хитрый механизм... подробнее

Показать сообщение отдельно
kpoxa
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213

Как дать доступ к разделенной памяти для пользовательских программ из сервиса - C++

07.07.2006, 17:24. Просмотров 1794. Ответов 4
Метки (Все метки)

У меня такая проблема, при запуске компьютера стартует сервис с правами SYSTEM. Этот сервис создает разделенную память и помещает в нее идентификатор потока, который может получать сообщения от пользователей. Сообщения передаются с помощью PostThreadMessage.
Проблема в том, что когда клиент пытается открыть доступ к памяти с помощью OpenFileMapping, то он получает хендл равный 0.
Как я понимаю, при создании этой памяти ей устанавливаются права доступа только для SYSTEM. Каким образом я могу создать эту память и установить доступ к ней на чтение, но для всех?
Кстати, опишу задачу шире, может у кого будут другие идеи.
Программа стартует на сервере в качестве сервиса, выполняет свои задачи, но не имеет пользовательского интерфейса. Когда оператору надо проверить данные о выполнении или изменить настройки он должен запустить некую программу (в моем случае тот же выполняемый файл, но с другими параметрами) и получить пользовательский интерфейс. Я решил, что легче всего будет при запуске сервиса создать разделяемую память и в нее поместить ID того потока, который отвечает за открытие пользовательского интерфейса. Тогда при запуске программы в пользовательском режиме программа откроет эту память, получит поток и пошлет ему сообщение, после чего спокойно закроется, а сервис продолжит работу, но уже в графическом режиме.
Была так же идея с внедрением клиенсткого процесса в процесс сервиса с получением адресса необходимой процедуры, но там будет много проблем с синхронизацией и, так же, с атрибутами безопасности.
Буду рад любой помощи, а так же интересным и простым идеям.
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru