Windows: установка атрибутов безопасности на уровне детализации процесса
Справочная информация: у меня есть служба Windows, которая работает в фоновом режиме (очевидно), и использует служебную программу для выполнения определенной интерактивной задачи и отправки данных в службу через именованный канал. Служебная программа запускается всякий раз, когда служба считает нужным, и живет только в течение нескольких секунд.
Проблема начинается в Vista, где программа больше не может свободно открывать именованный канал для доступа на запись (см. Укрепление служб Windows).
Я планирую решить эту проблему, создав именованный канал с такими атрибутами безопасности, которые предоставляют доступ на запись для текущего пользователя, вошедшего в систему, в контексте которого запускается программа, в то время как у меня возник вопрос: могу ли я разрешить доступ к этому имени передать только процесс, используя его (или его поток) дескриптор?
Или по-другому: может ли механизм безопасности Windows (Vista/7/ более поздняя версия) перейти на уровень детализации на уровне процесса?
Я новичок в этой области, и документы по безопасности вызывают у меня головную боль, поэтому любое просвещение приветствуется.
Заранее спасибо.
1 ответ
Вы не можете защитить объект с помощью идентификатора процесса (потому что процессы не являются участниками безопасности), но вы можете использовать GetNamedPipeClientProcessId
после того, как соединение установлено, и не выполнит все запросы, если идентификатор процесса не тот, который вам нравится.