HKCU\...\App Paths

#5
It is accounted for in Win7.
The fact it does not exist by default changes nothing.
A lot of registry keys do not exist by default.
"It is accounted for." What does that mean?

And it's existence is significant. Ordinary users cannot write to "HKLM\...\App Paths", but they can write to "HKCU\...\App Paths". TCC already looks in "HKLM\...\App Paths" when resolving EXE names. I suspect the next version will also look in "HKCU\...\App Paths", giving the user the advantage of being able to find more EXEs which are not in %PATH.
 
Aug 23, 2010
285
2
#6
It means what it means. The path is searched by conforming applications. F.e. by explorer.exe.
The existence or absence is insignificant, the behavior matters.
 
#7
Explorer also searches "App Paths". That's why I can enter "excel", "winword", "outlook", "textpad" (and others) in the Start\Run dialog when none of them are in my path. I'd call TCC's doing it a feature.
 
Likes: rps
Aug 23, 2010
285
2
#8
What you mean by "also"? I understand you less and less.
"App Paths" is no magic, it's a shell defined registry key, that is searched by shell functions and conforming applications. F.e. Far manager.
Code:
reg QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\NBTExplorer.exe"

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\NBTExplorer.exe
    (по умолчанию)    REG_SZ    C:\Games\Minecraft\.tools\NBTExplorer\NBTExplorer.exe

[C:\dev\temp]$ tcc /C nbtexplorer.exe
TCC: Unknown command "nbtexplorer.exe"

[C:\dev\temp]$ nbtexplorer.exe
// application started normally.
[C:\dev\temp]$
 
#11
This means it is either not using right shell functions, or not fully conformant to the specs.
What specs?

TCC typically uses CreateProcess() to start apps ... not shell functions. So if it's going to look in "App Paths" it must do it manually.

Does your example (3 posts ago) use CMD? Here, textpad.exe is only mentioned in "App Paths" and TCC finds it while CMD doesn't.

Code:
v:\> ver & which textpad

TCC  23.00.31 x64   Windows 10 [Version 10.0.17763.55]
textpad is an external : C:\apps\textpad\textpad.exe

v:\> cmd /c ver ^& textpad.exe

Microsoft Windows [Version 10.0.17763.55]
'textpad.exe' is not recognized as an internal or external command,
operable program or batch file.
 
Aug 23, 2010
285
2
#12
No, it doesn't. Far manager uses internal app starter, unless you Shift+Enter.
In which case it uses ShellExecuteEx().
Internal starter does not use ShellExecuteEx() directly, but is compatible with it.