Главная страница
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.016 c
14-62278
Mox Fulder
2003-11-26 22:12
2003.12.19
NT AUTHORITY SYSTEM


6-62183
BAPBAP
2003-10-24 03:15
2003.12.19
IdTCPClient свойство BoundIP - что оно определяет?


14-62285
undert
2003-11-23 17:35
2003.12.19
Если Мастера Delphi не могут дать ответа по Delphi,будут про PHP


1-62139
Djek
2003-12-07 19:32
2003.12.19
Формат вывода


4-62313
demonyator
2003-10-26 01:49
2003.12.19
Код украинского языка.