尝试在Windows上重新启动打印机后台处理程序时,“net start spooler”失败,退出代码为2

时间:2011-03-02 09:36:45

标签: c++ winapi printing spooler

我的应用程序安装了虚拟打印机驱动程序。

在某些用户的系统上,我需要重新启动打印机假脱机程序,因为OpenPrinter等函数返回RPC_S_SERVER_UNAVAILABLE(文本为“RPC服务器不可用。”),这意味着假脱机程序已停止工作。

我尝试通过CreateProcess调用“net start spooler”来实现这一点:

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 个答案:

答案 0 :(得分:2)

您似乎以错误的方式解释了ERRORLEVEL代码2。它不是代码ERROR_NO_MORE_FILES。我在用户帐户下启动了cmd.exe ,并收到了以下输出

  

C:> echo%errorlevel%0

     

C:\ Users \ Rita> net stop spooler System   错误5已经发生。

     

访问被拒绝。

     

C:> echo%errorlevel%2

任何大于0的“net.exe”退出代码都是错误。

我建议您使用StartService启动该服务,然后您将获得更多错误控制。