Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  13:14[Войти] | [Зарегистрироваться]
Ответ на вопрос № 83665

03-07-2019 11:04
Уважаемые коллеги.

Помогите, пожалуйста, победить следующую проблему:
Сервис работает под LocalSystem и в процессе работы создаёт отображаемый в памяти файл.
Как заставить систему разрешить приложению под ограниченным аккаунтом читать этот файл?
Впрочем, сервис тоже не может прочесть созданную приложением память.
Win 7, UAC отключен, там где требуется SecurityAttributes пока nil. Пробовал передавать, но тогда были проблемы и в админском аккаунте.
Имя отображения с префиксом "Global\".

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

10-07-2019 00:28 | Сообщение от автора вопроса
Спасибо, Александр. Я уже пытался изучить эту возможность. Манипулировал с DACL и SACL, но ничего не получилось. Почитал обсуждения в инете и понял, что программно выдать такие привилегии простому пользователю нельзя. Кроме того, если верить информации на этих сайтах, ситуация с разными глобальными мутексами и тп. отличается от MMF. Конечно, есть выход в создании памяти на стороне сервиса, с последующей записью в неё из приложения. Пока вставил постыдную затычку с файлом на диске.

09-07-2019 13:29
Ограниченный пользователь по-умолчанию не может создавать объекты с Global. Надо дать ему привилегию Create global objects.
https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/create-global-objects

08-07-2019 05:22 | Сообщение от автора вопроса
Даже стыдно, но когда посмотрел в модуль с реализацией IPC, то понял, что он не маилслотах, а не на пайпах. А там вроде ограничение в 424 байта? Вернулся к MMF. Под админом всё проходит без нареканий. Под бесправным пользователем могу открыть отображение и считать данные, но попытка CreateFileMapping возвращает ноль и ошибку 87 - Неверно задан параметр. Может ли ограниченный пользователь создавать объекты с Global\? Мне кажется, с этим связано. :(

05-07-2019 13:46
Inferno
Решил переписать на pipes, потому что там работает, но буфер маленький.

Маленький - это какой?
При создании пайпа мы указываем размеры буферов ввода/вывода, но для системы они носят рекомендательный характер. При необходимости система будет их изменять. Буфера для пайпов размещаются в nonpaged pool, поэтому принципиальное ограничение - это размер физической памяти.
В этом принципиальное отличие от MMF, которые располагаются в выгружаемой области памяти.

Модель пайпов хорошо подходит для передачи потоков данных и сообщений. Модель разделяемой памяти лучше для передачи статических образов.

05-07-2019 00:01 | Сообщение от автора вопроса
Спасибо за информацию. Ситуация такая: приложение под админом и сервис под LocalSystem (UAC пока отключен везде) прекрасно видят разделяемую память. Но стоит войти под пользователем с ограниченными правами - начинаются проблемы. Понаписал вчера кучу кода со всеми этими сидами, пидами и секурити. Запутался. Наверное наделал ошибок. У пользователей запуск от админа исключен и будет включен UAC.
Решил переписать на pipes, потому что там работает, но буфер маленький. Просто надо добавить в IPC классы методы для блочной передачи/приема.
Я где-то читал, что MMF лежит не только в основе буфера обмена, но даже pipes. Т.е. это самое низкоуровневое решение. Но не хватает квалификации, или это, действительно, невозможно.

04-07-2019 14:18
Не готовый рецепт, но информация к размышлению.

В одной своей программе я делал обмен через разделяемую память между экземплярами. Имя с префиксом Global. Security Descriptor инициализирован, но без Security Attributes.
Первым вызывается CreateMutex, результат проверяется Win32Check, и затем по GetLastError <> ERROR_ALREADY_EXISTS выясняется, что это был первый экземпляр.
Потом вызывается CreateFileMapping и т.д.

Так вот что происходит.
Windows 10 (в 7 так же), UAC включён.
1. Запуск в обычном режиме, админ (это не важно), но без поднятия прав (это важно). Получаем ошибку №5 - Access denied. Это результат работы Win32Check.
2.1. Запуск Run as Administrator. Успешно создаются все глобальные объекты.
2.2. Повторный запуск той же программы в обычном режиме. Успешно открываются глобальные объекты, созданные в первом экземпляре.

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Жил-был у бабушки серенький КТО?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования