'net start spooler' завершается неудачно с кодом выхода 2 при попытке перезапустить диспетчер очереди печати в Windows - PullRequest
1 голос
/ 02 марта 2011

Мое приложение устанавливает драйвер виртуального принтера.

В некоторых пользовательских системах мне нужно перезапустить диспетчер очереди печати, поскольку такие функции, как OpenPrinter, возвращают RPC_S_SERVER_UNAVAILABLE (текст «Сервер RPC недоступен.»), Что означает, что диспетчер очереди перестал работать.

Я пытаюсь сделать это, вызывая «net start spooler» с CreateProcess:

PROCESS_INFORMATION pi = { 0 };
STARTUPINFO si = { sizeof(si) };
// later
CreateProcess(0, "net start spooler", 0, 0, 0, 0, 0, 0, &si, &pi );

В некоторых пользовательских системах это работает, но в других это завершается неудачно с кодом выхода 2, и GetLastError возвращает ERROR_NO_MORE_FILES (текст: «Больше нет файлов.»).

Кто-нибудь знает, что ERROR_NO_MORE_FILES будет означать в этом случае?

1 Ответ

2 голосов
/ 02 марта 2011

Похоже, вы неверно истолковали код ошибки 2. Это не код ERROR_NO_MORE_FILES. Я запустил cmd.exe под учетной записью пользователя и получил следующий вывод

C:> echo% errorlevel% 0

C: \ Users \ Rita> Спулер системы net stop произошла ошибка 5.

Доступ запрещен.

C:> echo% errorlevel% 2

Любой код завершения «net.exe», больше 0, является ошибкой.

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

...