.NET Windows Service call winspool.Drv доступ запрещен - PullRequest
0 голосов
/ 26 июня 2019

У меня есть служба Windows, написанная на C #.Это исключение, когда метод OpenPrinter файла winspool.drv вызывается для открытия принтера в локальной сети

Проблема появляется только в Windows 7 (x64).Когда я запускаю тот же сервисный код, что и настольное приложение в Windows 7 (x64), он работает нормально.

var deviceName = "\\ip\printername";
IntPtr hPrinter =new IntPtr();
var  DesiredAccess = PrinterAccessRights.PRINTER_ACCESS_USE | PrinterAccessRights.READ_CONTROL;
bool bRet = SpoolerApi.OpenPrinter(DeviceName, ref hPrinter, new PRINTER_DEFAULTS(DesiredAccess));

System.ComponentModel.Win32Exception (0x80004005): Access is denied

1 Ответ

0 голосов
/ 27 июня 2019

Вероятно, это проблема пользователя. Попробуйте сменить пользователя, запустившего службу (из диспетчера управления службами), возможно, просто для проверки вы можете заставить службу работать как пользователь. Если это работает, вам, вероятно, следует изменить способ настройки принтера, чтобы сделать его доступным для пользователя, выполняющего службу, или создать настраиваемого пользователя для запуска службы с правами доступа к принтеру.

...