私のアプリケーションは、仮想プリンター ドライバーをインストールします。
一部のユーザーのシステムでは、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 が何を意味するか知っている人はいますか?