Launching Windows Terminal with a file path that has a trailing backslash (in quotes) breaks the launch #13061

Closed
opened 2026-01-31 03:32:31 +00:00 by claunia · 10 comments
Owner

Originally created by @routerino on GitHub (Mar 17, 2021).

Environment

Windows build number: 10.0.19042.0
Windows Terminal version (if applicable): Believe this has happened on previous versions, but 1.7.572.0

Any other software?
Fresh install of Windows

Steps to reproduce

run wt -d "%userprofile%\" (edited, missed the -d parameter before)

Expected behavior

windows terminal handles trailing backslashes and still launches in the correct folder

Actual behavior

error 0x8007010b. Note that this does not happen if you leave out the quotes (but that will also break on folders with spaces)

Nkr4pXAc6T

Originally created by @routerino on GitHub (Mar 17, 2021). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> # Environment ```none Windows build number: 10.0.19042.0 Windows Terminal version (if applicable): Believe this has happened on previous versions, but 1.7.572.0 Any other software? Fresh install of Windows ``` # Steps to reproduce run `wt -d "%userprofile%\"` (edited, missed the -d parameter before) <!-- A description of how to trigger this bug. --> # Expected behavior windows terminal handles trailing backslashes and still launches in the correct folder <!-- A description of what you're expecting, possibly containing screenshots or reference material. --> # Actual behavior error 0x8007010b. Note that this does not happen if you leave out the quotes (but that will also break on folders with spaces) <!-- What's actually happening? --> ![Nkr4pXAc6T](https://user-images.githubusercontent.com/45954722/111419453-99526200-873d-11eb-893f-49b0649ec626.gif)
Author
Owner

@skyline75489 commented on GitHub (Mar 17, 2021):

This isn't really about the backslash. You should use:

wt -d %userprofile%
@skyline75489 commented on GitHub (Mar 17, 2021): This isn't really about the backslash. You should use: ```text wt -d %userprofile% ```
Author
Owner

@routerino commented on GitHub (Mar 17, 2021):

Well that was a dumb error, but there's actually still a problem. Trying with wt -d "%userprofile%\" still breaks. However, wt -d %userprofile%\ does not. Reopening!

Nkr4pXAc6T

@routerino commented on GitHub (Mar 17, 2021): Well that was a dumb error, but there's actually still a problem. Trying with `wt -d "%userprofile%\"` still breaks. However, `wt -d %userprofile%\` does not. Reopening! ![Nkr4pXAc6T](https://user-images.githubusercontent.com/45954722/111419453-99526200-873d-11eb-893f-49b0649ec626.gif)
Author
Owner

@KalleOlaviNiemitalo commented on GitHub (Mar 17, 2021):

Perhaps this is caused by the "special interpretation of backslash characters when they are followed by a quotation mark character" in CommandLineToArgvW. Try doubling the backslash.

@KalleOlaviNiemitalo commented on GitHub (Mar 17, 2021): Perhaps this is caused by the "special interpretation of backslash characters when they are followed by a quotation mark character" in [CommandLineToArgvW](https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw). Try doubling the backslash.
Author
Owner

@routerino commented on GitHub (Mar 17, 2021):

Perhaps this is caused by the "special interpretation of backslash characters when they are followed by a quotation mark character" in CommandLineToArgvW. Try doubling the backslash.

That does appear to resolve the issue, but I don't think that's intended behavior. It does identify the problem though.

@routerino commented on GitHub (Mar 17, 2021): > Perhaps this is caused by the "special interpretation of backslash characters when they are followed by a quotation mark character" in [CommandLineToArgvW](https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw). Try doubling the backslash. That does appear to resolve the issue, but I don't think that's intended behavior. It does identify the problem though.
Author
Owner

@zadjii-msft commented on GitHub (Mar 17, 2021):

That's exactly what the cause is:

c6a31710d9/src/cascadia/TerminalApp/AppCommandlineArgs.cpp (L821)

You might have better luck with wt -d "%userprofile%"\ instead - IIRC, CommandLineToArgv will still treat that as a single argument, and append the trailing slash.

@zadjii-msft commented on GitHub (Mar 17, 2021): That's exactly what the cause is: https://github.com/microsoft/terminal/blob/c6a31710d915f2f1b470bd01cde74602e048f533/src/cascadia/TerminalApp/AppCommandlineArgs.cpp#L821 You might have better luck with `wt -d "%userprofile%"\` instead - IIRC, `CommandLineToArgv` will still treat that as a single argument, and append the trailing slash.
Author
Owner

@routerino commented on GitHub (Mar 17, 2021):

That's exactly what the cause is:

c6a31710d9/src/cascadia/TerminalApp/AppCommandlineArgs.cpp (L821)

You might have better luck with wt -d "%userprofile%"\ instead - IIRC, CommandLineToArgv will still treat that as a single argument, and append the trailing slash.

I'm not sure I'd consider that a solution. Most people are going to be adding a trailing slash on accident, not because they intentionally included it. These people will get confused by the error. I know it took me about 30 mins to track down why (a keyboard shortcut in multicommander to launch windows terminal in the open directory automatically adds a trailing slash).

Not going to reopen this myself, but I wouldn't consider that a satisfactory answer.

@routerino commented on GitHub (Mar 17, 2021): > That's exactly what the cause is: > > https://github.com/microsoft/terminal/blob/c6a31710d915f2f1b470bd01cde74602e048f533/src/cascadia/TerminalApp/AppCommandlineArgs.cpp#L821 > > You might have better luck with `wt -d "%userprofile%"\` instead - IIRC, `CommandLineToArgv` will still treat that as a single argument, and append the trailing slash. I'm not sure I'd consider that a solution. Most people are going to be adding a trailing slash on accident, not because they intentionally included it. These people will get confused by the error. I know it took me about 30 mins to track down why (a keyboard shortcut in multicommander to launch windows terminal in the open directory automatically adds a trailing slash). Not going to reopen this myself, but I wouldn't consider that a satisfactory answer.
Author
Owner

@DHowett commented on GitHub (Mar 17, 2021):

We briefly considered rewriting the argument parser, but we realized that doing so would bring us out of line with every other Windows application. Unfortunately, we're just not willing to do that. Sorry!

If there comes a day when we can do that without feeling like it breaks with established precedent, I'd be happy to do so 😄

@DHowett commented on GitHub (Mar 17, 2021): We briefly considered rewriting the argument parser, but we realized that doing so would bring us out of line with every other Windows application. Unfortunately, we're just not willing to do that. Sorry! If there comes a day when we can do that without feeling like it breaks with established precedent, I'd be happy to do so :smile:
Author
Owner

@richardhttps commented on GitHub (Mar 13, 2025):

Issue still exists
This:
wt -p "PowerShell" -d "C:\Users\"
Results in that:
[error 2147942667 (0x8007010b) when launching "C:\Users\Richard\AppData\Local\Microsoft\WindowsApps\Microsoft.PowerShell_8wekyb3d8bbwe\pwsh.exe"'] Could not access starting directory "C:\Users""

@richardhttps commented on GitHub (Mar 13, 2025): Issue still exists This: `wt -p "PowerShell" -d "C:\Users\"` Results in that: ```[error 2147942667 (0x8007010b) when launching "C:\Users\Richard\AppData\Local\Microsoft\WindowsApps\Microsoft.PowerShell_8wekyb3d8bbwe\pwsh.exe"'] Could not access starting directory "C:\Users""```
Author
Owner

@DHowett commented on GitHub (Mar 13, 2025):

We briefly considered rewriting the argument parser, but we realized that doing so would bring us out of line with every other Windows application. Unfortunately, we're just not willing to do that. Sorry!

If there comes a day when we can do that without feeling like it breaks with established precedent, I'd be happy to do so 😄

@DHowett commented on GitHub (Mar 13, 2025): > We briefly considered rewriting the argument parser, but we realized that doing so would bring us out of line with every other Windows application. Unfortunately, we're just not willing to do that. Sorry! > > If there comes a day when we can do that without feeling like it breaks with established precedent, I'd be happy to do so 😄
Author
Owner

@mikejhill commented on GitHub (Oct 28, 2025):

For anyone else who comes across this, this can become an issue when resolving root drive paths programmatically. Certain Windows access patterns resolve root drives with trailing backslashes, but not directories. For example:

> cd C:\
> echo %CD% 
C:\

> cd C:\Users\
> echo %CD%
C:\Users

This same challenge shows up when writing Windows Explorer context menu entries. E.g., the command wt.exe -p "Cygwin" -d "%V" succeeds in C:\Users but errors in C:\ with the same Could not access starting directory "C:\"" message mentioned above.

A straightforward workaround is to suffix paths with .. This is the pattern Git Bash uses as well. Example: wt.exe -p "Cygwin" -d "%V."

As far as I can tell, directory paths for wt.exe -d "..." can be consistently suffixed in this way to address this. Windows will resolve C:\Users and C:\Users\. identically.

@mikejhill commented on GitHub (Oct 28, 2025): For anyone else who comes across this, this can become an issue when resolving root drive paths programmatically. Certain Windows access patterns resolve root drives with trailing backslashes, but not directories. For example: ```cmd > cd C:\ > echo %CD% C:\ > cd C:\Users\ > echo %CD% C:\Users ``` This same challenge shows up when writing Windows Explorer context menu entries. E.g., the command `wt.exe -p "Cygwin" -d "%V"` succeeds in `C:\Users` but errors in `C:\` with the same `Could not access starting directory "C:\""` message mentioned above. A straightforward workaround is to suffix paths with `.`. This is the pattern Git Bash uses as well. Example: `wt.exe -p "Cygwin" -d "%V."` As far as I can tell, directory paths for `wt.exe -d "..."` can be consistently suffixed in this way to address this. Windows will resolve `C:\Users` and `C:\Users\.` identically.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#13061