Explorer is a single-instance application, but you can find other ways to get the effect of running a separate instance

Explorer is a single-instance application, which means that if you try to elevate it, or if you try to run the 32-bit version on a 64-bit system, you don't actually get an elevated Explorer or a 32-bit Explorer, because the second instance hands the request to the existing instance. This is a problem if, say, you have an old shell extension that works only when elevated, or is available only in the 32-bit version. Or if you want an elevated Explorer to do some administrative file management.

As we saw some time ago, you can solve this problem by creating an explorer browser control with the desired attributes. But that involves programming. Is there a way to do this without programming?

Yes, and it's a bit of a trick: You look for some application that already creates an explorer browser control, and run that application in the way you want. If you want an elevated Explorer, then run that victim application elevated. If you want a 32-bit Explorer, then run the 32-bit version of that victim application.

My choice for the victim application is Notepad.

In other words: To get the effect of an elevated Explorer window, run Notepad elevated, then select File, then Open.

To get the effect of a 32-bit Explorer window, run the 32-bit version of Notepad (from the C:\Windows\SysWow64 directory), then select File, then Open.

You can do your file management inside this dialog box: Rename files, cut and paste them, right-click them to invoke context menu verbs. Note that you cannot launch files by double-clicking them, because the common file dialog interprets double-clicking as "Open this file". If you want to launch a file, right-click it and then select the appropriate verb (usually Open).

Comments (23)
  1. mac says:

    Does Launch folder windows in a separate process option not create new instances either?

    1. Antonio Rodríguez says:

      It does, but AFAIK, they are all managed by a single parent process: you launch an instance, for example, from an elevated command line, that instance communicates your request to the parent process and exits, and the parent process then creates a new (unprivileged) instance to show the folder you requested. I guess that’s what Raymond means when he says, in the linked article, that Explorer is a “limited instance” program.

  2. Piotr says:

    What are the boudaries of a single instance? When two users log in (RDP) they have their own explorer.exe processes. Is there a way to simulate that for one user? Something like log in physically and RDP at once?

    1. skSdnW says:

      That is a different session (both logon and TS).

    2. cheong00 says:

      For users you can use “Desktops” utility of SysInternals Suite for that.

      We did use that to spawn explorer.exe as different user on different desktops as a quick way to switch between UAT and development environment. (Kill the explorer process on the new desktop, then “Run as…” explorer.exe with another AD user account.)

  3. skSdnW says:

    You used to be able to do Explorer.exe /separate,c:\ not sure why it was removed.

    1. Joshua says:

      Hey that’s a good point.

    2. mikeb says:

      That sounds like it could be an interesting article of its own.

    3. cheong00 says:

      Funny you mentioned it. You can do “start %windir%\explorer.exe /separate”

      The help text stated it’s for starting 16-bit process, but it has no problem to start explorer in 64-bit mode.

  4. Alex says:

    I had to do something similar recently. On a kiosk machine in which we kill explorer every few seconds, i needed to move some files on disk. Instead of dealing with the murderous script, I just used notepad’s open dialogue to move things around. Despite my insistence that this is a valid and hilarious workaround, my coworker persists in killing the script and launching explorer

    1. Richard says:

      Why on Earth would you kill Explorer every few seconds?

      I really can’t figure out what that’s supposed to achieve.

      1. Joshua says:

        To give somebody who breaks out of the kiosk sandbox a hard time.

        1. Ben Voigt says:

          Just set a different shell and don’t start explorer in the first place. Much more effective than repeatedly killing it.

  5. same trick applies for executing explorer tasks as a different user… run notepad as user2 (presumably elevated privileges, such as local admin), open dialog, manipulate file (or right click run app, etc)… close notepad and continue as normal.

  6. I have to use elevated Explorer to access a Blu-ray drive connected to a server, and until now I’ve done this killing Explorer and running it elevated. Good to know about this elevated application trick.

  7. Brian says:

    If I’m an admin running under UAC, and I try to use Explorer to perform a file operation that requires admin privileges, I get a UAC-ish prompt, asking if I want to elevate and if I confirm, it does the operation.
    What magic does Explorer use to allow this level of smooth operation? I’m pretty sure that it’s not like Task Manager, which, when you want to “Show processes from all users”, kills itself and starts up a new instance elevated.

    1. alegr1 says:

      Most likely a new hidden Explorer process is launched. Though this doesn’t work (or used not to work) for unzipping files. Also, the elevated process may not have your mapped drives and network shares accessible.

      1. Tiraniddo says:

        It creates an elevated COM server which exposes interfaces such as IFileOperation which can then be used to manipulate the files as an admin. This is also the route many UAC bypasses take as these objects no longer prompt by default.

  8. 640k says:

    You can launch a second instance of explorer.exe that doesn’t communicate with the first instance using CreateDesktop/OpenDesktop.

  9. ZLB says:

    This is also a useful trick if your user profile/Windows install is hosed and drops you at a blank desktop.

    Also useful if you have to use a Server core system and aren’t too good with cmd/power Shell!

  10. cheong00 says:

    We used the Save File dialog to launch telnet.exe on some “kiosk mode browser” instead back was I was studying higher diploma in an university. This will work (but more dangerous because you may accidentally changed a file) as well.

  11. Adam says:

    I had to do this for a while when my registry got corrupted and launching explorer directly would error on open. Notepad.exe usually worked pretty well in a pinch and was my go-to choice, however, it only supports single-file selection. When I needed to select and copy around multiple files, something like vscode was a better choice. All of the above were less painful than getting my development environment reimaged and reinstalling/configuring everything.

  12. Joshua A Schaeffer says:

    I had a completely different approach, as you’ll see on Kickstarter in the next few weeks hopefully.

Comments are closed.

Skip to main content