1

私のアプリケーションは、仮想プリンター ドライバーをインストールします。

一部のユーザーのシステムでは、OpenPrinter などの関数が RPC_S_SERVER_UNAVAILABLE (テキストは "The RPC server is available.") を返すため、プリンター スプーラーを再起動する必要があります。これは、スプーラーが動作を停止したことを意味します。

私は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:> エコー %errorlevel% 0

C:\Users\Rita>net stop spooler システムエラー 5 が発生しました。

アクセスが拒否されました。

C:> echo %errorlevel% 2

「net.exe」の終了コードが 0 より大きい場合はエラーです。

StartServiceを使用してサービスを開始することをお勧めします。そうすれば、より多くのエラーを制御できます。

于 2011-03-02T12:36:04.253 に答える