1

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

在某些用户的系统上,我需要重新启动打印机后台处理程序,因为 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 在这种情况下意味着什么?

4

1 回答 1

2

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

C:>echo %errorlevel%0

C:\Users\Rita>net stop spooler 出现系统错误 5。

访问被拒绝。

C:>echo %errorlevel%2

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

我推荐你使用StartService来启动服务,这样你会有更多的错误控制。

于 2011-03-02T12:36:04.253 回答