Windows: установка атрибутов безопасности на уровне детализации процесса

Справочная информация: у меня есть служба Windows, которая работает в фоновом режиме (очевидно), и использует служебную программу для выполнения определенной интерактивной задачи и отправки данных в службу через именованный канал. Служебная программа запускается всякий раз, когда служба считает нужным, и живет только в течение нескольких секунд.

Проблема начинается в Vista, где программа больше не может свободно открывать именованный канал для доступа на запись (см. Укрепление служб Windows).

Я планирую решить эту проблему, создав именованный канал с такими атрибутами безопасности, которые предоставляют доступ на запись для текущего пользователя, вошедшего в систему, в контексте которого запускается программа, в то время как у меня возник вопрос: могу ли я разрешить доступ к этому имени передать только процесс, используя его (или его поток) дескриптор?

Или по-другому: может ли механизм безопасности Windows (Vista/7/ более поздняя версия) перейти на уровень детализации на уровне процесса?

Я новичок в этой области, и документы по безопасности вызывают у меня головную боль, поэтому любое просвещение приветствуется.

Заранее спасибо.

1 ответ

Решение

Вы не можете защитить объект с помощью идентификатора процесса (потому что процессы не являются участниками безопасности), но вы можете использовать GetNamedPipeClientProcessId после того, как соединение установлено, и не выполнит все запросы, если идентификатор процесса не тот, который вам нравится.

Другие вопросы по тегам