Windows 7 Сервисные различия между локальной системой и локальной службой - PullRequest
4 голосов
/ 21 июля 2010

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

Мне удалось получить 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 и Script.Вуаля, все работало.

Чего я не понимаю: почему Ghostscript под учетной записью «службы локали» способен найти принтер, хотя эта учетная запись обладает меньшими правами, чем «система локали»?

И: Какое право доступа мне нужно установить для «языковой системы» или любой другой учетной записи пользователя, чтобы она работала?

Или: существует ли полный список подробных различий между этими учетными записями?

Большое спасибо и привет, GHad

1 Ответ

3 голосов
/ 22 июля 2010

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

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

Greetz, GHad

...