Как найти или добавить имя пользователя для печати в XPS, напечатанный с помощью XPSDrv

Кто-нибудь знает, есть ли простой способ включить имя пользователя печатного пользователя где-нибудь доступное либо в пакете XPS, либо в любом заголовке в потоке данных от драйвера при использовании XPSDrv? Используя фильтр в конвейере фильтров (хотя это не так просто, по моему мнению)? Читая значения заголовка TCP/IP? Я погуглил мои пальцы, пытаясь найти разумное решение.

2 ответа

Решение

Просто? Нет, не совсем. Лучше всего, вероятно, изменить фильтр в вашем драйвере XPS для выполнения следующих действий:

  1. Извлеките маркер пользователя из пакета свойств конвейера, используя ключ XPS_FP_USER_TOKEN.
  2. Получить SID пользователя из токена с помощью GetTokenInfo
  3. Получить имя пользователя из SID, используя LookupAccountSID
  4. Добавьте имя пользователя к заявке на печать. Чтобы все было как можно проще, я бы предложил повторно использовать поле из общедоступной схемы, например, JobComment ParameterInit.

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

Вы можете хранить метаданные в XPS (Базовые свойства), или вы можете использовать билет для этой цели.

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