Как найти или добавить имя пользователя для печати в XPS, напечатанный с помощью XPSDrv
Кто-нибудь знает, есть ли простой способ включить имя пользователя печатного пользователя где-нибудь доступное либо в пакете XPS, либо в любом заголовке в потоке данных от драйвера при использовании XPSDrv? Используя фильтр в конвейере фильтров (хотя это не так просто, по моему мнению)? Читая значения заголовка TCP/IP? Я погуглил мои пальцы, пытаясь найти разумное решение.
2 ответа
Решение
Просто? Нет, не совсем. Лучше всего, вероятно, изменить фильтр в вашем драйвере XPS для выполнения следующих действий:
- Извлеките маркер пользователя из пакета свойств конвейера, используя ключ XPS_FP_USER_TOKEN.
- Получить SID пользователя из токена с помощью GetTokenInfo
- Получить имя пользователя из SID, используя LookupAccountSID
- Добавьте имя пользователя к заявке на печать. Чтобы все было как можно проще, я бы предложил повторно использовать поле из общедоступной схемы, например, JobComment ParameterInit.
Это всего лишь отправная точка. Я подозреваю, что вам нужно будет вникнуть в детали того, как работает драйвер XPS, чтобы сделать это надежным решением.
Вы можете хранить метаданные в XPS (Базовые свойства), или вы можете использовать билет для этой цели.