Windows (8.1) API call for control-alt-shift+cancel from shutdown screen?

2

Explorer.exe crashed out on me without bringing the system entirely to its knees. This is not the first time this has happened. Basically I lose the Start Bar + taskbar + systray + desktop icons and am left with a solid dark blue desktop (no background image).

By control-alt-delete I can bring up the lock screen menu (including task manager). Using a combination of task manager, command prompts and MS sysinternals' Process Explorer, I can generate both standard user windows and elevated windows (details available if needed). However, under neither my standard login nor my elevated admin login can I seem to re-launch explorer to restore the desktop. Running explorer.exe without any switches appears to do nothing. Explorer.exe /n or /e (or any other documented switch or launching with "START") gives me a file browser window, but not the start bar + taskbar. Killing and restarting this explorer.exe does not restore functionality either. Right clicking Windows Explorer (the new file explorer window) in task manager and selecting "Restart" drops it from Processes->Apps to Processes->Windows Processes (without an open file explorer) and restarting from there changes it to Processes->Background Processes from where there is neither an open file explorer nor "Restart" menu option.

Windows key shortcuts appear to be non-functional, as the start bar doesn't exist. They do not work with the started file explorer window in focus. Alt-F4 with nothing in focus or after clicking on the blue background doesn't bring up any menu/dialogue. Alt-F4 from within an application still works to close that window|application as appropriate. My headphones' up-down volume signals are also not interpreted whatever remains up of the system (but I can control volume via an application-specific slider).

I can't seem to bring up the shutdown dialogue as per tip two of https://serverfault.com/questions/4464/hidden-commands-on-windows as I can't use keyboard shortcuts or use the start bar. Using the following code inspired by this and that:

<!DOCTYPE html>
<!-- saved from url=(0016)http://localhost -->
<HTML>
<HEAD>
    <TITLE>Start Page</TITLE>

    <OBJECT ID="oShell"
        CLASSID="clsid:13709620-C279-11CE-A49E-444553540000">
    </OBJECT>

    <STYLE>
        INPUT {width: 200} 
    </STYLE>  

    <SCRIPT LANGUAGE="VBScript">
    <!--
        function fnStart(sMethod)
            dim objShell
            set objShell = CreateObject("shell.application")
                set objWscr = CreateObject("WScript.Shell")
            select case sMethod
              case 0    
                  'Minimizes all windows on the desktop
                oshell.Shell_MinimizeAll
              case 1  
                  'Displays the Run dialog box
                oshell.FileRun
              case 2  
                  'Displays the Shut Down Windows dialog box
                'neither oshell.Shell_Shutdown nor oshell.Shell_ShutdownWindows (supplied in MS docs) are recognized as valid functions of the oshell object.
                objShell.ShutdownWindows
                oshell.ShutdownWindows
                     'objWscr.Run "Rundll Shell32.dll,SHExitWindowsEx" ' returns "The system cannot find the file specified" error box.
                set objShell = nothing
              case 3  
                  'Displays the Find dialog box
                oshell.Shell_FindFilesr
              case 4  
                  'Displays the Date/Time dialog box
                oshell.Shell_SetTime 
              case 5  
                  'Displays the Internet Properties dialog box
                oshell.Shell_ControlPanelItem "INETCPL.cpl"
              case 6  
                  'Explores the My Documents folder
                oshell.Shell_Explore "C:\My Documents"
              case 7  
                  'Enables user to select folder from Program Files
                oshell.Shell_BrowseForFolder 0, "My Programs", 0, "C:\Program Files" 
              case 8  
                  'Opens the Favorites folder
                oshell.Shell_Open "C:\WINDOWS\Favorites"
              case 9  
                  'Displays the Taskbar Properties dialog box
                oshell.Shell_TrayProperties
            end select  
        end function      
    -->
    </SCRIPT>
<SCRIPT type="text/javascript" LANGUAGE="JavaScript">
function logout() {
    //code
    (new ActiveXObject("Shell.Application")).ShutdownWindows();
}
logout();
</SCRIPT>

</HEAD>

<BODY>
    <H1>Start...</H1>
    <INPUT type="button" value="Edit Taskbar Properties" onclick="fnStart(9)"><br>
    <INPUT type="button" value="Open Favorites Folder" onclick="fnStart(8)"><br>
    <INPUT type="button" value="Browse Program Files" onclick="fnStart(7)"><br>
    <INPUT type="button" value="Explore My Documents" onclick="fnStart(6)"><br>
    <INPUT type="button" value="Modify Internet Properties" onclick="fnStart(5)"><br>
    <INPUT type="button" value="Set System Time" onclick="fnStart(4)"><br>
    <INPUT type="button" value="Find a File or Folder" onclick="fnStart(3)"><br>
    <INPUT type="button" value="Shut Down Windows" onclick="fnStart(2)"><br>
    <INPUT type="button" value="Run" onclick="fnStart(1)">     
    <INPUT type="button" value="Minimize All Windows" onclick="fnStart(0)">     
</BODY>
</HTML>

As an hta file (and clicking on Shut down windows) doesn't do anything, but doesn't throw any errors. As an htm(l) file in Internet Explorer it throws a "Permission Denied" error, regardless of the settings for the local zone. I've tried a few permutations of this code including: here, here

Control-Alt-Delete followed by "switch user" and direct login as the administrator account results in a login to a pure black screen with a mouse cursor. Control-Alt-Delete and switching back to my non-admin login brings back my solid dark blue "desktop" without icons (after about 0.1s of displaying a solid light blue|cyan|teal "desktop").

I'm wondering if there's a CLSID or application object that can be invoked to call whatever is called from control-alt-shift + cancel from the shutdown dialogue? Alternatively, do you know of any way that I can kill off a System Service that wraps explorer, restart the service to give me back my desktop?

I would rather not shutdown/reboot as I'm essentially using this PC as a server and want it to be as "always-up" as possible.

mpag

Posted 2017-05-10T18:17:51.570

Reputation: 285

1Have you tried running: C:\Windows\system32\userinit.exe, if restarting explorer.exe doesn't result in a well behaved system and affecting other accounts, I would restart the box, just to be on the safe side. This is not normal behavior. I guess logging off (logoff.exe) and on again doesn't help? – Peter Hahndorf – 2017-05-11T06:20:47.073

userinit was the magic I needed. That worked. Thanks. (submit as an answer and I'll accept it). I didn't try logoff, but I assumed that it wouldn't work as a switch user followed by login as admin, logout from admin didn't fix it. – mpag – 2017-05-11T17:36:50.953

userinit saves the day again:) – mpag – 2018-04-24T19:27:17.390

Answers

2

You can try running C:\Windows\system32\userinit.exe which is the component that first runs when a user logs on (it starts Explorer.exe as the Windows shell).

Not sure what is wrong with your system, but userinit.exe sits one level below Explorer.exe so it may help.

Peter Hahndorf

Posted 2017-05-10T18:17:51.570

Reputation: 10 677