Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Mutex и права пользователей.  (Прочитано 8516 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« : 10-11-2014 13:21 » 

В общем ситуация такая.Есть inproc COM  сервер.
От повторного запуска его оберегает Mutex.Проблема в том что он не срабатывает: если
сервер был поднят с удаленной машины с системными правами , а затем его повторно запустили вручную с правами учетной записи пользователя.Как можно это дело обойти.
Записан
zubr
Гость
« Ответ #1 : 10-11-2014 13:42 » 

Понизь полномочия мутекса до юзера. SetSecurityDescriptorDacl в помощь.
Записан
Diletant
Помогающий

de
Offline Offline

« Ответ #2 : 17-11-2014 13:54 » new

Понизь полномочия мутекса до юзера. SetSecurityDescriptorDacl в помощь.

Зачем такие сложности. Во-первых имя мьютекса должно быть с префиксом "Global\". Во-вторых, при попытке открыть мьютекс проверять не только результат на NULL, но и GetLastError() на ERROR_ACCESSDENIED.
Записан
zubr
Гость
« Ответ #3 : 17-11-2014 14:26 » 

Цитата
Зачем такие сложности. Во-первых имя мьютекса должно быть с префиксом "Global\". Во-вторых, при попытке открыть мьютекс проверять не только результат на NULL, но и GetLastError() на ERROR_ACCESSDENIED.
1. Там из сложности - 3 строчки кода.
2. ERROR_ACCESSDENIED получили - и что?
Криво как-то, имхо.
Записан
Diletant
Помогающий

de
Offline Offline

« Ответ #4 : 18-11-2014 09:48 » 


1. Там из сложности - 3 строчки кода.
Ну, положим, не три а как минимум щесть. Улыбаюсь А если ошибки обрабатывать, то все 10.

2. ERROR_ACCESSDENIED получили - и что?
Криво как-то, имхо.

Конечная цель - проверить, существует объект ядра или нет. Если ACCESSDENIED, то существует. По-моему, логично.
Записан
zubr
Гость
« Ответ #5 : 18-11-2014 12:28 » 

Цитата
Ну, положим, не три а как минимум щесть. Улыбаюсь А если ошибки обрабатывать, то все 10.
Если быть точным, то 5 строк. С проверкой - 7.
То есть для вас 7 строчек кода вместо дополнительных 2-х с проверкой на ERROR_ACCESSDENIED - настолько критично, что соответствует вашей фразе "Зачем такие сложности." Нет, ну если строка вашего кода стоит 100 евро, то я согласен Улыбаюсь
Я согласен, что решение с проверкой на ERROR_ACCESSDENIED на 5 строчек кода компактнее  Не могу..., но оно не универсальное и применимо только на проверку использования объекта ядра, но ни в коем случае для синхронизации или того хуже - обмена данными между процессами.
Более всего, касаемо темы автора топика, применение дескирпторов безопасности важно, что человек узнает новые возможности в программировании Windows, потому что когда понадобится работать с объектами ядра не только для определения его использования с разными правами пользователя, а и другими возможностями данных объектов, опять придется искать решение.
« Последнее редактирование: 18-11-2014 12:31 от zubr » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines