У меня довольно сложный набор инструментов, поэтому приготовьтесь к длинному сообщению, пока не доберетесь до проблемы:
Мне удалось получить PDFCreator и виртуальный принтер для создания PDF-файлов под Windows 7, работающий в режиме сервера в качестве службы. Следующим шагом в этом процессе является вызов PDFCreator VBScript после создания PDF-файла. Сценарий загружает PDF-файл на наш сервер через WebService и опрашивает сервер на наличие полученного PDF-файла. Когда полученный PDF-файл загружен, VBScript должен распечатать его на настроенном принтере.
Теперь для печати я использовал встроенный COM-объект PDFCreator, который дает доступ к GhostScript. Это отлично работало в Windows XP для любой учетной записи, в которой была запущена служба PDFCreator. Например, как пользователь домена, чтобы иметь доступ к общим принтерам из VBScript, поскольку контекст пользователя такой же, как у службы PDFCreator.
Теперь я попробовал то же самое для Windows 7 и использовал учетную запись «локальная система», как и раньше, потому что мой тестовый принтер является локальным (и работает, т.е. TestPage). Эффект заключается в том, что wscript остается в диспетчере задач и никогда не завершается. Затем я активировал интерактивный режим для службы и увидел Ghostscript, запрашивающий принтер для печати. Принтер существует, как я проверял перед вызовом GS в VBScript, но по какой-то причине GhostScript не видит принтер, хотя в диалоговом окне, открытом для выбора принтера, принтер есть.
После нескольких дней долгих поисков и безуспешных попыток даже новой выделенной учетной записи администратора для сервива я наконец нашел способ заставить его работать. Изменение пользователя службы PDFCreator на «службу локали» Сначала я получил сообщение об ошибке, связанное с ошибкой создания COM-объекта PDFCreator. Хорошо, я подумал, что это имеет смысл, поскольку «локальная служба» имеет меньше прав, чем «локальная система». Я обошел это ограничение, изменив права доступа в comexp.msc и предоставив права «службы локали» для локального и удаленного доступа к COM и скриптам. Вуаля, все заработало.
Чего я не понимаю: почему Ghostscript под учетной записью «locale service» может найти принтер, хотя у этой учетной записи меньше прав, чем у «locale system»?
И: Какие права доступа мне нужно установить для «локальной системы» или любой другой учетной записи пользователя, чтобы она работала?
Или: есть ли полный список подробных различий между этими учетными записями?
Большое спасибо и приветствие, GHad