This has been in the making for a long time...
This is what I have done so far....
5 programs start up and among them is "startup delayer" which is used to launch a bunch of other programs that mostly are for security reasons. "Startup delayer" organizes the programs and then at start up it launches another exe file called "startup launcher.exe".
This is the argument in the registry for it under Run ""C:\Program Files\r2 Studios\Startup Delayer\Startup Launcher.exe" /LaunchType=Auto /LaunchApps=Common"
I tried to edit it but did not save the changes and did not want to mess with it any further after that. I saw it in the task manager after bootup doing nothing for 40-120 seconds before it starts launching the other programs and that is just too much of a big gap. Other programs sometimes boot a little slow and sometimes they are more immediate. I tried it on other profiles on the system and it was the same results.
I am using it on Win 8.1
I did use fire daemon (Can make programs into services) to get it to launch earlier but it could did not work with "startup launcher.exe". So I created another program as a service and a feature that Fire Daemon has is that it can pre launch a program before the service starts (I added service to the EMS load order group so that it launches early enough). Then I wrote a script that to launch the program that I needed but it launched the "startup launcher.exe" in session 0. So I modified the script to wait for an exe file before it launches and it worked and I tested it with a couple of programs but was still too slow.
The below is an example of the script. (The idea of the scripts is to allow more time for the programs to load before desktop loads in all cases).
@echo off
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
psexec -i 1 C:\Example.exe
psexec -i 2 C:\Example.exe
psexec -i 3 C:\Example.exe
psexec -i 4 C:\Example.exe
psexec -i 5 C:\Example.exe
psexec -i 6 C:\Example.exe
psexec -i 7 C:\Example.exe
Timeout /T 2
Exit
I wrote it to run on any of 7 sessions because I notices it would always be different session running. It still ran too slowly with a 1 min gap or delay.
I tried the two below scripts as well. The idea behind it is to allow more time for the programs to load before it finally allows me to do a full boot up.
This one is to do immediate log off when logging on and it works 7 times in a row and only allows to start at session 8 as per tasklist command But it is too slow and does not start for about 40 seconds after logon.
@echo off
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
psexec -i 1 shutdown /L
psexec -i 2 shutdown /L
psexec -i 3 shutdown /L
psexec -i 4 shutdown /L
psexec -i 5 shutdown /L
psexec -i 6 shutdown /L
psexec -i 7 shutdown /L
Timeout /T 2
Exit
The above one worked a bit slow for the 1st one and then faster for the others.
The next one worked very well but not every time.
@echo off
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
:search
tasklist|find "winlogon.exe"
IF %ERRORLEVEL% == 0 (GOTO :found)
TIMEOUT /T 1
GOTO :search
:found
timeout /T 10
nircmd.exe killprocess "winlogon.exe"
Timeout /T 2
It would end the session several times or run for over a min and then I would log on. It worked well but I am worried that it would cause other damages to the system if I keep on ending winlogon that way.