To determine what service or driver didn't sart, without an event log entry, is a painful trial and error process.

Using NETSVC and SC, I have scripted SVCNStart.bat to test the Start value of all non-running services and drivers, and to report those who's ErrorControl is not 0 (ignore). To use SVCNStart.bat:

SVCNStart \\ComputerName

The console output contains:

\\ComputerName "Service or Driver Name" "Type of Object" "Start Parameter"

SVCNStart.bat contains:

<b>@echo off
setlocal
if "%1"<h1><a name="_goto_syntax_set_machine_1_set_machine_machine_if_machine_0_2_">"" goto syntax
set machine=%1
set machine=%machine:"=%
if "%machine:~0,2%"</a></h1>"\\" goto begin
:syntax
@echo SVCNStart \\ComputerName
endlocal
goto end
:begin
for /f "Skip=1 Tokens=1-3 Delims=" %%i in ('netsvc %1 /list') do call :test "%%j"
endlocal
goto end
:test
if %1<h1><a name="_goto_end_set_svc_1_for_f_Tokens_1_4_i_in_netsvc_machine_svc_query_do_call_test1_k_goto_end_test1_if_1">"" goto end
set svc=%1
for /f "Tokens=1-4" %%i in ('netsvc "%machine%" %svc% /query') do call :test1 "%%k"
goto end
:test1
if %1</a></h1>"running" goto end
if %1<h1><a name="_1060_goto_end_if_1">"1060" goto end
if %1</a></h1>"not" goto end
for /f "Skip=3 Tokens=1-2* Delims=: " %%i in ('sc "%machine%" qc %svc%') do call :test2 "%%i" "%%j" "%%k"
goto end
:test2
if /i %1<h1><a name="_TYPE_set_OK_N_amp_set_type_3_if_i_1">"TYPE" set OK=N&set type=%3
if /i %1</a></h1>"ERROR_CONTROL" goto test3
if /i not %1<h1><a name="_START_TYPE_goto_end_set_strt_3_if_2_LSS_0_goto_end_if_2_GTR_2_goto_end_set_OK_Y_goto_end_test3_if_OK_">"START_TYPE" goto end
set strt=%3
if %2 LSS "0" goto end
if %2 GTR "2" goto end
set OK=Y
goto end
:test3
if "%OK%"</a></h1>"N" goto end
if %2 EQU "0" goto end
@echo %machine% %svc% %type% %strt%
:end</b>