Я разработал приложение Windows, которое использует общую память --- --- файлы с отображением памяти для межпроцессного общения. У меня есть служба Windows, которая выполняет некоторую обработку и периодически записывает данные в файл с отображением памяти. У меня есть отдельное приложение Windows, которое читает из файла с отображением памяти и отображает информацию. Приложение работает как ожидалось в Windows XP, XP Pro и Server 2003, но не в Vista.Разрешения доступа к общей памяти для Windows
Я вижу, что данные, записываемые в файл с отображением памяти, выполняются правильно службой Windows, потому что я могу открыть файл с помощью текстового редактора и просмотреть сохраненные сообщения, но приложение «потребитель» не может читать из файла. Интересно отметить, что если я закрываю потребительское приложение и перезапускаю его, он расходует сообщения, которые ранее были записаны в файл с отображением памяти.
Кроме того, еще одна странная вещь: я получаю такое же поведение, когда подключаюсь к хосту Windows с помощью удаленного рабочего стола и вызывается/использует потребительское приложение через удаленный рабочий стол. Однако, если я вызываю удаленный рабочий стол и подключаюсь к сеансу консоли целевого хоста с помощью следующей команды: mstsc -v:servername /F -console
, все работает отлично.
Так вот почему я думаю, что проблема связана с разрешениями. Может кто-нибудь прокомментировать это?
EDIT:
ACL, который я использую для создания памяти файла, отображенные и объектов мьютекса, что sychronize доступ выглядит следующим образом:
TCHAR * szSD = TEXT("D:")
TEXT("(A;;RPWPCCDCLCSWRCWDWOGAFA;;;S-1-1-0)")
TEXT("(A;;GA;;;BG)")
TEXT("(A;;GA;;;AN)")
TEXT("(A;;GA;;;AU)")
TEXT("(A;;GA;;;LS)")
TEXT("(A;;GA;;;RD)")
TEXT("(A;;GA;;;WD)")
TEXT("(A;;GA;;;BA)");
Я думаю, что это может быть частью проблемы ,
Общие документы - это очень небезопасное место для файлов, связанных с МПК, - не делайте этого. –