Различия между службами Windows 7 между локальной системой и локальной службой

У меня довольно сложный набор инструментов, поэтому приготовьтесь к длинному сообщению, пока не доберетесь до проблемы:

Мне удалось получить 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


person GHad    schedule 21.07.2010    source источник


Ответы (1)


Ответ можно найти здесь: KB184291

Речь идет о том, что ASP/IIS работает под учетной записью «локальная система» и не может печатать, потому что принтеры недоступны под пользователем .DEFAULT. Копирование записей реестра помогает.

Гретц, Гад

person GHad    schedule 22.07.2010