Windows 11 Explorer alternative


Different embedding command lines correspond to different Explorer process modes.

The one shown in the screenshot (and below) is what you get when Explorer is started in Windows 10 mode (i.e. Control Panel):

C:\WINDOWS\explorer.exe /factory,{5BD95610-9434-43C2-886C-57852CC8A120} -Embedding

The one below is what you get when you provide a folder name on the command line (i.e. a new Explorer file manager process without the desktop and taskbar):

C:\WINDOWS\explorer.exe /factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b} -Embedding

An odd thing is that if you kill all Explorer processes and run one of those embedding command lines, the Explorer process starts, but no window is displayed.
Is there a line to start Explorer in Vista mode?
 

My Computer

System One

  • OS
    Windows 11

My Computer

System One

  • OS
    11 Home
    Computer type
    Laptop
    Manufacturer/Model
    Medion S15450
    CPU
    i5 1135G7
    Memory
    16GB DDR4
    Graphics Card(s)
    Intel Iris Xe
    Sound Card
    Eastern Electric MiniMax DAC Supreme; Emotiva UMC-200; Astell & Kern AK240
    Monitor(s) Displays
    Sony Bravia XR-55X90J
    Screen Resolution
    3840×2160
    Hard Drives
    2TB SSD internal
    37TB external
    PSU
    Li-ion
    Keyboard
    Logitech K800
    Mouse
    Logitech G402
    Internet Speed
    20Mbit/s up, 200Mbit/s down
    Browser
    FF
You can reduce the delay a little bit further still. Like so:
[see #80]

Thanks for the code. I spent a lot of time analyzing and testing it. In theory, it looks like only matching window titles that are under the explorer process should be faster, but I couldn't detect any improvement. I even tried with over 200 open windows. In the end, I modified my code to do only a 100ms delay at the end of the attempt instead of a 500ms delay at the start. I think it should be as fast as your code now (although I couldn't see any difference with the previous iteration).

Other than that delay change, I just cleaned up my code to remove the repetitive bits. It's only 77 lines now.

I played around with the idea of blocking input while doing the sendkeys, because a mouse click or keystroke at that point can break it. However, the blockinput method seems to only work on 32 bit. I found some long and complicated alternative code, but decided to give up on the idea figuring that it wasn't worth the risk.
 

My Computer

System One

  • OS
    Windows 10/11
    Computer type
    Laptop
    Manufacturer/Model
    Acer
Thanks for the code. I spent a lot of time analyzing and testing it. In theory, it looks like only matching window titles that are under the explorer process should be faster, but I couldn't detect any improvement. I even tried with over 200 open windows. In the end, I modified my code to do only a 100ms delay at the end of the attempt instead of a 500ms delay at the start. I think it should be as fast as your code now (although I couldn't see any difference with the previous iteration).

Other than that delay change, I just cleaned up my code to remove the repetitive bits. It's only 77 lines now.

I played around with the idea of blocking input while doing the sendkeys, because a mouse click or keystroke at that point can break it. However, the blockinput method seems to only work on 32 bit. I found some long and complicated alternative code, but decided to give up on the idea figuring that it wasn't worth the risk.
Checking if the name of the process equals explorer doesn't help to reduce the delay. Rather, it helps to mitigate the potential risk of bringing the wrong window to the foreground before proceeding with the SendKeys action.

So, the main difference is that the event handler only matches window titles of those specific windows that have not already been opened, as the OnWindowOpened event handler only gets executed each time when a window opens─which triggers the WindowOpenedEvent event. Whereas your code just starts looking for the window titles right away. (Even, if the window hasn't opened yet, in which case it could potentially cause unnecessary overhead especially in situations where it often tends to take a few moments before the window opens so that, as a result of this it opens even slower still.)

I just noticed a mistake in my code BTW. The program was exiting even if the window that opened doesn't match. Here is a small correction:

Code:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Automation;
using System.Windows.Forms;

class Program
{
    private static string Folder;

    private static void OnWindowOpened(object src, AutomationEventArgs e)
    {
        try
        {
            var elem = src as AutomationElement;
            Process proc = Process.GetProcessById(elem.Current.ProcessId);
            if (elem != null && proc.ProcessName == "explorer")
            {
                WindowPattern windowPattern = null;
                windowPattern = elem.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
                if (windowPattern.WaitForInputIdle(4000))
                {
                    Thread.Sleep(200);
                    for (int i=10; i>0; i--)
                    {
                        Thread.Sleep(100);
                        if (Array.Exists(new string[] { "Administrative Tools",
                                                        "Control Panel\\All Control Panel Items\\Administrative Tools",
                                                        "Windows Tools",
                                                        "Control Panel\\All Control Panel Items\\Windows Tools" },
                                         element => element == elem.Current.Name))
                        {
                            SetForegroundWindow((IntPtr)elem.Current.NativeWindowHandle);
                            SendKeys.SendWait("^{l}" + Folder + "{Enter}");
                            Process.GetCurrentProcess().Kill();
                        }
                    }
                }
            }
        }
        catch (Exception)
        {
            Process.GetCurrentProcess().Kill();
        }
    }

    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            Folder = args[0];

            // Fix issue where argument is quoted and ends with backslash
            if (Folder.EndsWith("\""))
            {
                Folder = Folder.Remove(Folder.Length - 1) + "\\";
            }
        }
        else
        {
            Folder = "C:";
        }

        System.Windows.Automation.Automation.AddAutomationEventHandler(
            WindowPattern.WindowOpenedEvent,
            AutomationElement.RootElement,
            TreeScope.Children,
            OnWindowOpened);

        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "control.exe",
            Arguments = "admintools",
            RedirectStandardOutput = false,
            RedirectStandardError = false,
            UseShellExecute = true,
            CreateNoWindow = false
        };

        Process process = new Process
        {
            StartInfo = startInfo
        };

        process.Start();

        // Wait
        Thread.Sleep(10000);
    }
    [DllImport("user32.dll")]
    private static extern bool SetForegroundWindow(IntPtr hWnd);
}

As for blocking user input. Never do this without the user's consent. The user should be made aware that a program/script is running with the specific goal of performing the kind of actions that involve UI Automation techniques. But I think it's fairly safe to assume that those who intend to use this small program are those who are already familiar with that particular notion.
 

My Computer

System One

  • OS
    11 Home
    Computer type
    Laptop
    Manufacturer/Model
    Medion S15450
    CPU
    i5 1135G7
    Memory
    16GB DDR4
    Graphics Card(s)
    Intel Iris Xe
    Sound Card
    Eastern Electric MiniMax DAC Supreme; Emotiva UMC-200; Astell & Kern AK240
    Monitor(s) Displays
    Sony Bravia XR-55X90J
    Screen Resolution
    3840×2160
    Hard Drives
    2TB SSD internal
    37TB external
    PSU
    Li-ion
    Keyboard
    Logitech K800
    Mouse
    Logitech G402
    Internet Speed
    20Mbit/s up, 200Mbit/s down
    Browser
    FF
Checking if the name of the process equals explorer doesn't help to reduce the delay. Rather, it helps to mitigate the potential risk of bringing the wrong window to the foreground before proceeding with the SendKeys action.

So, the main difference is that the event handler only matches window titles of those specific windows that have not already been opened, as the OnWindowOpened event handler only gets executed each time when a window opens─which triggers the WindowOpenedEvent event. Whereas your code just starts looking for the window titles right away. (Even, if the window hasn't opened yet, in which case it could potentially cause unnecessary overhead especially in situations where it often tends to take a few moments before the window opens so that, as a result of this it opens even slower still.)

I just noticed a mistake in my code BTW. The program was exiting even if the window that opened doesn't match.
As for blocking user input. Never do this without the user's consent. The user should be made aware that a program/script is running with the specific goal of performing the kind of actions that involve UI Automation techniques. But I think it's fairly safe to assume that those who intend to use this small program are those who are already familiar with that particular notion.

Thanks again. Your kung fu is at a considerably higher level than mine. I probably would not have spotted the minor mistake, which reinforces for me to avoid using any code I don't fully understand. I'll definitely keep your code in my collection for reference and educational purposes.

I've now updated my code to optionally use the clipboard to paste the path into the address bar. I wish there were a way to just make sendkeys.sendwait send quicker, but that looks like too much of a deep dive. In researching the issue, it looked possible to use sendkeys.send (after adding a message loop to the code), but I had no success with that.

Anyhow, I think I have it at a good enough state at this point and it's now been cleared with the Windows Defender team, so there's another reason to stop and leave it alone. 😉
 

My Computer

System One

  • OS
    Windows 10/11
    Computer type
    Laptop
    Manufacturer/Model
    Acer
Thanks again. Your kung fu is at a considerably higher level than mine. I probably would not have spotted the minor mistake, which reinforces for me to avoid using any code I don't fully understand. I'll definitely keep your code in my collection for reference and educational purposes.

I've now updated my code to optionally use the clipboard to paste the path into the address bar. I wish there were a way to just make sendkeys.sendwait send quicker, but that looks like too much of a deep dive. In researching the issue, it looked possible to use sendkeys.send (after adding a message loop to the code), but I had no success with that.

Anyhow, I think I have it at a good enough state at this point and it's now been cleared with the Windows Defender team, so there's another reason to stop and leave it alone. 😉
I just found out that it occasionally still fails in such a way that an additional File Explorer window opens with a warning sound as a result of the SendKeys acting a little bit too soon. So, I inserted a 250ms delay, and that appears to be OK.

I also found another way to put the path into the address bar. Here is the code:

Code:
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Automation;
using System.Windows.Forms;

class Program
{
    private static string Folder;
    private static IntPtr fld;
    private static uint psfgaoOut;

    private static void OnWindowOpened(object src, AutomationEventArgs e)
    {
        try
        {
            var elem = src as AutomationElement;
            Process proc = Process.GetProcessById(elem.Current.ProcessId);
            if (elem != null && proc.ProcessName == "explorer")
            {
                WindowPattern windowPattern = null;
                windowPattern = elem.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
                if (windowPattern.WaitForInputIdle(4000))
                {
                    Thread.Sleep(200);
                    for (int i=10; i>0; i--)
                    {
                        Thread.Sleep(100);
                        if (Array.Exists(new string[] { "Administrative Tools",
                                                        "Control Panel\\All Control Panel Items\\Administrative Tools",
                                                        "Windows Tools",
                                                        "Control Panel\\All Control Panel Items\\Windows Tools" },
                                         element => element == elem.Current.Name))
                        {
                            SetForegroundWindow((IntPtr)elem.Current.NativeWindowHandle);
                            Thread.Sleep(250);
                            SendKeys.SendWait("^{l}\\{Enter}");
                            SHOpenFolderAndSelectItems(fld, 0, new IntPtr[] {}, 0);
                            SendKeys.SendWait("{Enter}");
                            Process.GetCurrentProcess().Kill();
                        }
                    }
                }
            }
        }
        catch (Exception)
        {
            Process.GetCurrentProcess().Kill();
        }
    }

    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            Folder = args[0];

            // Fix issue where argument is quoted and ends with backslash
            if (Folder.EndsWith("\""))
            {
                Folder = Folder.Remove(Folder.Length - 1) + "\\";
            }

            SHParseDisplayName(Path.GetFullPath(Folder), IntPtr.Zero, out fld, 0, out psfgaoOut);
            if (fld == IntPtr.Zero)
            {
                Process.GetCurrentProcess().Kill();
            }
        }
        else
        {
            fld = IntPtr.Zero;
        }

        System.Windows.Automation.Automation.AddAutomationEventHandler(
            WindowPattern.WindowOpenedEvent,
            AutomationElement.RootElement,
            TreeScope.Children,
            OnWindowOpened);

        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "control.exe",
            Arguments = "admintools",
            RedirectStandardOutput = false,
            RedirectStandardError = false,
            UseShellExecute = true,
            CreateNoWindow = false
        };

        Process process = new Process
        {
            StartInfo = startInfo
        };

        process.Start();

        // Wait
        Thread.Sleep(10000);
    }
    [DllImport("user32.dll")]
    private static extern bool SetForegroundWindow(IntPtr hWnd);

    [DllImport("shell32.dll")]
    private static extern int SHOpenFolderAndSelectItems(IntPtr pidlFolder, uint cidl, [MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, uint dwFlags);

    [DllImport("shell32.dll")]
    private static extern void SHParseDisplayName([MarshalAs(UnmanagedType.LPWStr)] string name, IntPtr bindingContext, out IntPtr pidl, uint sfgaoIn, out uint psfgaoOut);
}
 

My Computer

System One

  • OS
    11 Home
    Computer type
    Laptop
    Manufacturer/Model
    Medion S15450
    CPU
    i5 1135G7
    Memory
    16GB DDR4
    Graphics Card(s)
    Intel Iris Xe
    Sound Card
    Eastern Electric MiniMax DAC Supreme; Emotiva UMC-200; Astell & Kern AK240
    Monitor(s) Displays
    Sony Bravia XR-55X90J
    Screen Resolution
    3840×2160
    Hard Drives
    2TB SSD internal
    37TB external
    PSU
    Li-ion
    Keyboard
    Logitech K800
    Mouse
    Logitech G402
    Internet Speed
    20Mbit/s up, 200Mbit/s down
    Browser
    FF
I also found another way to put the path into the address bar.

Very cool! That's way beyond anything I could figure out.

There is one weird thing [revised]...

I sometimes get 2 windows (whether I run it on Windows 10 or Windows 11). Try this:

OldExplorer C:\

Or this:

OldExplorer D:\
 
Last edited:

My Computer

System One

  • OS
    Windows 10/11
    Computer type
    Laptop
    Manufacturer/Model
    Acer
Very cool! That's way beyond anything I could figure out.

There is one weird thing [revised]...

I sometimes get 2 windows (whether I run it on Windows 10 or Windows 11). Try this:

OldExplorer C:\

Or this:

OldExplorer D:\
OK, I think I got it now... this one starts by removing any trailing combination of doublequotes and/or backslashes, and also removing any leading doublequotes. (If this produces an empty string, it just navigates to the system root by putting a simple backslash in the address bar.)

Next, it checks if the result ends with a colon, in which case it tacks on a trailing backslash to make root folders always end with a backslash.

Leading backslashes are never removed so as to avoid destroying local folderpaths that start with the \\?\ prefix and UNC network paths. These paths can't be parsed to a pointer to an item identifier list (PIDL), though. Therefore, putting such a path in the address bar is done with the SendKeys which is slower, but that still appears to work.

Please don't hesitate to share your thoughts, and/or if you found more bugs... lol :p

Code:
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Automation;
using System.Windows.Forms;

class Program
{
    private static string Folder = "";
    private static IntPtr fld;
    private static uint psfgaoOut;

    private static void OnWindowOpened(object src, AutomationEventArgs e)
    {
        try
        {
            var elem = src as AutomationElement;
            Process proc = Process.GetProcessById(elem.Current.ProcessId);
            if (elem != null && proc.ProcessName == "explorer")
            {
                WindowPattern windowPattern = null;
                windowPattern = elem.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
                if (windowPattern.WaitForInputIdle(4000))
                {
                    Thread.Sleep(200);
                    for (int i=10; i>0; i--)
                    {
                        Thread.Sleep(100);
                        if (Array.Exists(new string[] { "Administrative Tools",
                                                        "Control Panel\\All Control Panel Items\\Administrative Tools",
                                                        "Windows Tools",
                                                        "Control Panel\\All Control Panel Items\\Windows Tools" },
                                         element => element == elem.Current.Name))
                        {
                            SetForegroundWindow((IntPtr)elem.Current.NativeWindowHandle);
                            Thread.Sleep(250);
                            if (Folder != "")
                            {
                                if (fld != IntPtr.Zero)
                                {
                                    SendKeys.SendWait("^{l}\\{Enter}");
                                    SHOpenFolderAndSelectItems(fld, 0, new IntPtr[] {}, 0);
                                    SendKeys.SendWait("{Enter}");
                                }
                                else
                                {
                                    SendKeys.SendWait("^{l}" + Folder + "{Enter}");
                                }
                            }
                            else
                            {
                                SendKeys.SendWait("^{l}\\{Enter}");
                            }
                            Process.GetCurrentProcess().Kill();
                        }
                    }
                }
            }
        }
        catch
        {
            Process.GetCurrentProcess().Kill();
        }
    }

    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            Folder = args[0].TrimEnd(new [] {'\\', '\"'}).TrimStart(new [] {'\"'});
            if (Folder.EndsWith(":"))
            {
                Folder = Folder + "\\";
            }

            try
            {
                if (new DirectoryInfo(Folder).Parent != null)
                {
                    SHParseDisplayName(Path.GetFullPath(Folder), IntPtr.Zero, out fld, 0, out psfgaoOut);
                    if (fld == IntPtr.Zero)
                    {
                        Process.GetCurrentProcess().Kill();
                    }
                }
            }
            catch
            {
            }
        }

        System.Windows.Automation.Automation.AddAutomationEventHandler(
            WindowPattern.WindowOpenedEvent,
            AutomationElement.RootElement,
            TreeScope.Children,
            OnWindowOpened);

        ProcessStartInfo startInfo = new ProcessStartInfo
        {
            FileName = "control.exe",
            Arguments = "admintools",
            RedirectStandardOutput = false,
            RedirectStandardError = false,
            UseShellExecute = true,
            CreateNoWindow = false
        };

        Process process = new Process
        {
            StartInfo = startInfo
        };

        process.Start();

        // Wait
        Thread.Sleep(10000);
    }
    [DllImport("user32.dll")]
    private static extern bool SetForegroundWindow(IntPtr hWnd);

    [DllImport("shell32.dll")]
    private static extern int SHOpenFolderAndSelectItems(IntPtr pidlFolder, uint cidl, [MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, uint dwFlags);

    [DllImport("shell32.dll")]
    private static extern void SHParseDisplayName([MarshalAs(UnmanagedType.LPWStr)] string name, IntPtr bindingContext, out IntPtr pidl, uint sfgaoIn, out uint psfgaoOut);
}
 

My Computer

System One

  • OS
    11 Home
    Computer type
    Laptop
    Manufacturer/Model
    Medion S15450
    CPU
    i5 1135G7
    Memory
    16GB DDR4
    Graphics Card(s)
    Intel Iris Xe
    Sound Card
    Eastern Electric MiniMax DAC Supreme; Emotiva UMC-200; Astell & Kern AK240
    Monitor(s) Displays
    Sony Bravia XR-55X90J
    Screen Resolution
    3840×2160
    Hard Drives
    2TB SSD internal
    37TB external
    PSU
    Li-ion
    Keyboard
    Logitech K800
    Mouse
    Logitech G402
    Internet Speed
    20Mbit/s up, 200Mbit/s down
    Browser
    FF
Far Commander
1.png
 

My Computer

System One

  • OS
    Microsoft Windows 11 Home
    Computer type
    Laptop
    Manufacturer/Model
    ASUS TUF Dash F15 FX516PM_FX516PM
    CPU
    Intel Core i7-11370H
    Motherboard
    ASUS FX516PM
    Memory
    Micron 4ATF1G64HZ-3G2E2/8G + Patriot PSD416G320081S
    Graphics Card(s)
    NVIDIA GeForce RTX 3060 Laptop
    Sound Card
    Edifier 800BT Plus
    Monitor(s) Displays
    LM156LF-2F03
    Screen Resolution
    1920 x 1080
    Hard Drives
    1. PCIe Gen 4 KINGSTON SNV2S1000G
    2. PCIe Gen 3 SK Hynix HFM512GD3JX013N
    PSU
    200W
    Mouse
    Corsair KATAR PRO XT
    Internet Speed
    70 Mbps
    Browser
    Firefox
    Antivirus
    Microsoft Defender Antivirus
That looks a lot like Norton Commander (1986-1998):

I see such a program as totally useless in a modern Windows environment.

Edit: Somewhere lower in the linked page you can read that Far Manager is based on... Norton Commander.
 

My Computer

System One

  • OS
    Windows 11 Pro 22H2 22621.2283
    Computer type
    PC/Desktop
    Manufacturer/Model
    Build by vendor to my specs
    CPU
    AMD Ryzen 7 5700G
    Motherboard
    MSI PRO B550M-P Gen3
    Memory
    Kingston FURY Beast 2x16GB DIMM DDR4 2666 CL16
    Graphics Card(s)
    MSI GeForce GT 730 2GB LP V1
    Sound Card
    Creative Sound Blaster Audigy FX
    Monitor(s) Displays
    Samsung S24E450F 24"
    Screen Resolution
    1920 x 1080
    Hard Drives
    1. SSD Kingston NV2 - 500 GB
    2. SSD-SATA Crucial MX500-2TB
    PSU
    Corsair CV650W
    Case
    Cooler Master Silencio S400
    Cooling
    Cooler Master Hyper H412R
    Keyboard
    Microsoft Wired 600
    Mouse
    Asus WT465 (wireless)
    Internet Speed
    70 Mbps down / 80 Mbps up
    Browser
    Firefox 115.1.0 ESR
    Antivirus
    F-secure via Internet provider
    Other Info
    - Oracle VirtualBox 7 for testing software on Win 10 or 11
    - Start11 makes my Taskbar usable
    - OpenShell makes my Start Menu usable
If it were up to me, I would hope there was a file explorer replacement that would be the Windows 10/11 with updated features ofcourse equivalent of list.com/fv.com by Vernon Buerg during the DOS days in the 1980s and 1990s. Not sure how many here have used it.
 

My Computer

System One

  • OS
    Windows XP/7/8/8.1/10/11, Linux, Android, FreeBSD Unix
    Computer type
    Laptop
    Manufacturer/Model
    Dell XPS 15 9570
    CPU
    Intel® Core™ i7-8750H 8th Gen Processor 2.2Ghz up to 4.1Ghz
    Motherboard
    Dell XPS 15 9570
    Memory
    32GB using 2x16GB modules
    Graphics Card(s)
    Intel UHD 630 & NVIDIA GeForce GTX 1050 Ti with 4GB DDR5
    Sound Card
    Realtek ALC3266-CG
    Monitor(s) Displays
    15.6" 4K Touch UltraHD 3840x2160 made by Sharp
    Screen Resolution
    3840x2160
    Hard Drives
    Toshiba KXG60ZNV1T02 NVMe 1024GB/1TB SSD
    PSU
    Dell XPS 15 9570
    Case
    Dell XPS 15 9570
    Cooling
    Stock
    Keyboard
    Stock
    Mouse
    SwitftPoint ProPoint
    Internet Speed
    Comcast/XFinity 1.44Gbps/42.5Mbps
    Browser
    Microsoft EDGE (Chromium based) & Google Chrome
    Antivirus
    Windows Defender that came with Windows
list.com/fv.com
My F-Secure program advices me not to visit this site!

Edit: If I use this adress in my protected VirtualBox environment, there's appearing this adress:
https://www6.list.com/?template=ARROW_3&tdfs=1&s_token=1695550806.0166180000&uuid=1695550806.0166180000&term=List%20of%20Software%20Services&term=List%20Help%20Desk%20Software&term=Generate%20List%20Of%20Leads&searchbox=0&showDomain=1&backfill=0
And that's a dead link
 
Last edited:

My Computer

System One

  • OS
    Windows 11 Pro 22H2 22621.2283
    Computer type
    PC/Desktop
    Manufacturer/Model
    Build by vendor to my specs
    CPU
    AMD Ryzen 7 5700G
    Motherboard
    MSI PRO B550M-P Gen3
    Memory
    Kingston FURY Beast 2x16GB DIMM DDR4 2666 CL16
    Graphics Card(s)
    MSI GeForce GT 730 2GB LP V1
    Sound Card
    Creative Sound Blaster Audigy FX
    Monitor(s) Displays
    Samsung S24E450F 24"
    Screen Resolution
    1920 x 1080
    Hard Drives
    1. SSD Kingston NV2 - 500 GB
    2. SSD-SATA Crucial MX500-2TB
    PSU
    Corsair CV650W
    Case
    Cooler Master Silencio S400
    Cooling
    Cooler Master Hyper H412R
    Keyboard
    Microsoft Wired 600
    Mouse
    Asus WT465 (wireless)
    Internet Speed
    70 Mbps down / 80 Mbps up
    Browser
    Firefox 115.1.0 ESR
    Antivirus
    F-secure via Internet provider
    Other Info
    - Oracle VirtualBox 7 for testing software on Win 10 or 11
    - Start11 makes my Taskbar usable
    - OpenShell makes my Start Menu usable
I'm still getting two windows, in some cases, with your code. Try this:

oldexplorer %appdata%
Thanks. Yes, that seems to be the case with %userprofile% and any of its subfolders also. I doubt there is any serious interest in this particular subject so, I won't be providing a fix.
 

My Computer

System One

  • OS
    11 Home
    Computer type
    Laptop
    Manufacturer/Model
    Medion S15450
    CPU
    i5 1135G7
    Memory
    16GB DDR4
    Graphics Card(s)
    Intel Iris Xe
    Sound Card
    Eastern Electric MiniMax DAC Supreme; Emotiva UMC-200; Astell & Kern AK240
    Monitor(s) Displays
    Sony Bravia XR-55X90J
    Screen Resolution
    3840×2160
    Hard Drives
    2TB SSD internal
    37TB external
    PSU
    Li-ion
    Keyboard
    Logitech K800
    Mouse
    Logitech G402
    Internet Speed
    20Mbit/s up, 200Mbit/s down
    Browser
    FF

Latest Support Threads

Back
Top Bottom