windows - How can I make it so that the start menu always creates new instances of programs?

26
2014-06
  • Earlz

    I love the "WinKey + type "note" + enter" workflow of starting programs like notepad. However, I have a huge annoyance that I can't get over and has annoyed me since day 1. When I already have an instance of notepad open, this won't create a new instance. It will instead bring the instance I already have open to the front of the screen. I have never had so many programs open that I needed to be able to search across the open ones to bring the one I'm interested in to the top. The only way I've found to work around this is to right click on the task bar item for the program, and click the program name from there, which launches a new instance of the program

    So, how can I disable this "feature" and make it so when I press "enter" from the search screen, it always creates a new instance of the program?

  • Answers
  • Jason C

    The "easy" way is to hit Shift + Enter.

    Another way is to permanently do this for specific applications. In the case of Notepad:

    1. Right-click on the tile.
    2. Click open file location.
    3. Right-click on the shortcut.
    4. Change the target to:

      %windir%\system32\cmd.exe /c start %windir%\system32\notepad.exe
      

      In general you could do this to any shortcut (including whatever one pops up when you type in the search box), and you do it by prepending cmd.exe /c start to the usual target path.

    For Windows 8 there is a registry tweak (source):

    1. Open the registry editor.
    2. Go to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ImmersiveShell
    3. Right-click in right pane and create a new value named DesktopAppsAlwaysLaunchNewInstance with the type DWORD (skip this step if it already exists).
    4. Set its value to 1.
    5. Log off then log back on.

    This tweak no longer works in 8.1. In 8.1 there is a crazy hack (source):

    1. Install Debugging tools for Windows (free download from MSDN)
    2. Create a directory on your computer to store symbols in ([author uses] c:\localsymbols)
    3. Create a shortcut on your desktop to run this (replace the two paths to point wherever you need):

      [path_to_debugging_tools]\ntsd.exe -pn explorer.exe -pv -y SRV*[path_to_local_symbols]*http://msdl.microsoft.com/download/symbols -c "eb Windows_UI_Search!SearchUI::Data::SwitchToApp b8 00 00 00 00 c3; q"
      
    4. Double click the shortcut ... [ ... and it should be working now.]

    Why Microsoft chose to do this when every other operating system in existence and past version of Windows does the opposite is a bit beyond me. At least they made shift + enter functional, but apparently they decided that the majority of users are incapable of keeping track of their open windows or using the task bar (and UI decisions like that in major OSes are precisely why a user would end up like that) and that "start notepad" doesn't mean start notepad. And thus, they continue to doom typing commands to the realm of the "advanced" user.

  • HopelessN00b

    Hold Shift when you press Enter.

    This won't work with every application, but it will with Notepad or any other application that can have multiple instances.


  • Related Question

    Run multiple instance of any windows application
  • Jus12

    Suppose some author has enforced his Windows application to be single instance. Is there any way to make multiple instance of this application (aside from running inside a virtual machine or requesting the author to rewrite the app)?

    If there is a readymade tool, I would like to know it. (I have tried sandboxie and Altiris SVS without luck).

    If there is nothing out there, I want to program a tool/hack that will let me do this. I am looking for pointers where to start - what will be involved, what skills would be needed. I have moderate programming skills in C and Java.

    If this cannot be done, please explain why.

    EDIT: I know its a bad idea but I still need to do it (for various reasons). I want a generic way that works for any application and does not introduce errors.


  • Related Answers
  • see an example

    Many applications check the global list of processes (with EnumProcesses, OpenProcess, GetModuleBaseName, and similar functions) or list of windows (with EnumWindows, EnumChildWindows).

    You may try to set hook (see samples SetWindowsHookEx, CallNextHookEx, etc) to hook those specific API function calls from that application and replace requested data in response with yours to fool the application.

  • Adrian McCarthy

    There is no generic way because different applications use different methods. A small number of apps do this simply for "usability", but for many others, there may be a good reason to enforce singletons. Bypassing that could lead to data corruption or simply failing to run.

  • the_mandrill

    Lock files, named pipes and synchronisation events are some of the common ways applications use to check they're the only running instance. To work around lock files you'd either have to virtualise the file system, hook into it or do a carefully timed delete (and that may not work if it locks the file open too). Named pipes and synchronisation events will be much more difficult because you don't have the same control from outside the application that you do with files.

  • Tonton

    It is possible!

    Here is an image of me running half-life 1 4x in 4 windows all connected to the same LAN server, the only problem is the controllers not being independently linked to each window.

    http://img29.imageshack.us/img29/5642/yc0y.jpg

    To do this, you need 'Process Explorer' - a program that allows you to do what is known as 'Close Handle' on the '\BaseNamedObjects\ValveHalfLifeLauncherMutex' sub-process or something. its not that hard. go here for detailed instructions - http://am.half-lifecreations.com/forums/index.php?topic=479.0

    But yeah that's for half-life but get Process Explorer and im sure you'll be able to find which handle/process you need to close in order to get the programs u want running multi times.

    I dont see why windows doesn't implement running games multi times in splits/snaps as a feature anyway! its clearly because people wouldn't buy as many PC's... also check out SoftXSpand really awesome, allows u to run multiple instances of windows as independent users

  • Tomas

    You can run application on different users accounts and instance checking will not work anymore.