Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

Сервис+mailslot   Найти похожие ветки 

 
Zapped   (2003-10-14 16:23) [0]

Здравствуйте!
Прелюдия.
Пишу сервис на основе TServiceApplication, он должен сам в определённое
время проигрывать какой-то список аудио-файлов, а также должен иметь
возможность управляться другой программой (в том числе и по локальной
сети), то есть получать команды (воспроизвести, остановиться, пауза, следующий файл и т.п.)
ну и возвращать состояние (проигрывает/стоит, номер файла etc).
Задача: как организовать обмен командами/данными?
Нашёл, что можно с помощью mailslot`ов. В ходе проверки mailslot`ов,
типа, "кто как работает", пришёл к выводу, что нужно по одному mailslot`у у каждого (у сервиса и
у программы управления): у сервиса - чтобы получать команды, у
программы управления - для получения её (команды) результатов. Создал
класс, в нём в зависиости от параметра создаётся либо mailslot, либо
подключние к mailslot`у (но это не так важно).
Важно, то что:
создаю mailslot так (как везде написано):
FMailslotHandle := CreateMailslot(PChar(FMailslotName), 0, MAILSLOT_WAIT_FOREVER, nil);
проблем нет,
"подключаюсь" к нему:
FMailslotHandle := CreateFile(PChar(FMailslotName), GENERIC_WRITE, FILE_SHARE_READ,
nil, OPEN_EXISTING, 0, 0);
Вот здесь проблема: если из сервиса производить "подключение" к
mailslot`у, созданному программой управления - всё нормально, а вот
если наоборот: "подключаться" к mailslot`у, созданному в сервисе, из
программы управление - апшипка! GetLastError даёт 5 = ERROR_ACCESS_DENIED.
а вот если
вместо GENERIC_WRITE поставить GENERIC_READ
FMailslotHandle := CreateFile(PChar(FMailslotName), GENERIC_READ, FILE_SHARE_READ,
nil, OPEN_EXISTING, 0, 0);
то всё нормально! НО! нам ведь такое не надо...
судя по всему различие в правах программ: сервис запускается с правами
System, программа же в общем случае с правами любого пользователя.
Как победить? Только чобы по уму.
--
Спасибо,Алексей


 
clickmaker ©   (2003-10-14 16:43) [1]

Указывай Security Attributes у мэилслота в сервисе, давай на него права нужным пользователям



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
3-61900
karburator
2003-11-27 12:37
2003.12.19
выч. поле в SQL


3-61982
kvit
2003-11-26 11:42
2003.12.19
MS SQL Server


4-62328
frost63
2003-10-22 11:13
2003.12.19
SendTo и копирование


3-61951
Gennadiy
2003-11-26 17:09
2003.12.19
База данных SHUTDOWN


1-62096
Sacred
2003-12-08 22:00
2003.12.19
Что за тулза делающая *.chm файлы?