Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Вниз

Сервис+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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-61972
ViJen
2003-11-26 12:29
2003.12.19
проблема с индексами на другой машине


1-62004
Тролль
2003-11-27 08:35
2003.12.19
ListBox.Selected


3-61978
BoxTer
2003-11-26 10:31
2003.12.19
CommandTimeOut


1-62044
Dimaxx
2003-12-04 01:21
2003.12.19
Блокировка скриптов для WebBrowser


1-62057
go
2003-12-05 17:14
2003.12.19
Вычисления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский