0

I am trying to find a way of getting the "real path" of my actual desktop background. I use a slideshow and got many files (4k+) in the folder, some I want to delete the fast way.

What I've tried so far: %AppData%\Microsoft\Windows\Themes\CachedFiles - only contains the actual image %AppData%\Microsoft\Windows\Themes\TranscodedWallpaper - filepath and filename transcoded

HKEY_CURRENT_USER\Control Panel\Desktop\WallPaper - directs to the file above HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache - same as above

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers - only shows the copies of the files


My solution after some research:

With the transcoded path from HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache

I created a command

$TIC=(Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop).TranscodedImageCache
[System.Text.Encoding]::Unicode.GetString($TIC) -replace '(.+)([A-Z]:[0-9a-zA-Z\\])+','$2'

This one is working in a *.ps1 file or in powershell terminal:

Start-Process -FilePath "$env:SystemRoot\explorer.exe" -ArgumentList "/select,`"$([System.Text.Encoding]::Unicode.GetString((Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop).TranscodedImageCache) -replace '(.+)([A-Z]:[0-9a-zA-Z\\])+','$2')`""

And tried adding it to the right click menu of windows background

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\DesktopBackground\Shell\WPTargetDir]
@="Open Desktop Background File Location"
icon="imageres.dll,108"
position="bottom"

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\WPTargetDir\command]
@="PowerShell -Command "Start-Process -FilePath `"$env:SystemRoot\explorer.exe`" -ArgumentList `"/select,`"$([System.Text.Encoding]::Unicode.GetString((Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop).TranscodedImageCache) -replace '(.+)([A-Z]:[0-9a-zA-Z\\])+','$2')`"`";Read-Host""

*the Read-Host is only to catch the error message

I get a error, can someone explain to me why or have a solution?

Error is "No position parameter was found that accepts the argument "<path_to_file>".

+ Start-Process -FilePath `$env:SystemRoot\explorer.exe` -ArgumentList  ...                                             
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                     
+ CategoryInfo          : InvalidArgument: (:) [Start-Process], ParameterBindingException                               
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand 

Thank you

Patrick
  • 1
  • 1
  • 1
    [This](https://superuser.com/questions/853588/find-current-windows-8-desktop-background?rq=1) should still be applicable since how the desktop background hasn't actually changed between Windows 8 and Windows 10. – Ramhound Jan 06 '21 at 18:15
  • Thank you, but I don't want to execute a script. I want to run the command directly from the `@=""` default entry in the registry. – Patrick Jan 06 '21 at 23:43
  • **That won’t be possible.** The registry key contains binary. So you have to use PowerShell to decode it. You mention you received an error but didn’t specify what that error was exactly. – Ramhound Jan 06 '21 at 23:49
  • I have edited my post and added the error message. In the PS command I decode the binary. In pure powershell (console or .ps1 file) the command works and opens the windows explorer + selects the file. – Patrick Jan 07 '21 at 13:51

1 Answers1

0

Solution:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\WPTargetDir]
"icon"="imageres.dll,108"
@="Open Desktop Background File Location"

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\WPTargetDir\command]
@=hex(2):25,00,63,00,6f,00,6d,00,73,00,70,00,65,00,63,00,25,00,20,00,2f,00,51,\
  00,20,00,2f,00,53,00,20,00,2f,00,43,00,20,00,22,00,20,00,66,00,6f,00,72,00,\
  20,00,2f,00,66,00,20,00,22,00,75,00,73,00,65,00,62,00,61,00,63,00,6b,00,71,\
  00,20,00,64,00,65,00,6c,00,69,00,6d,00,73,00,3d,00,22,00,20,00,25,00,25,00,\
  61,00,20,00,69,00,6e,00,20,00,28,00,60,00,70,00,6f,00,77,00,65,00,72,00,73,\
  00,68,00,65,00,6c,00,6c,00,20,00,5b,00,53,00,79,00,73,00,74,00,65,00,6d,00,\
  2e,00,54,00,65,00,78,00,74,00,2e,00,45,00,6e,00,63,00,6f,00,64,00,69,00,6e,\
  00,67,00,5d,00,3a,00,3a,00,55,00,6e,00,69,00,63,00,6f,00,64,00,65,00,2e,00,\
  47,00,65,00,74,00,53,00,74,00,72,00,69,00,6e,00,67,00,28,00,28,00,47,00,65,\
  00,74,00,2d,00,49,00,74,00,65,00,6d,00,50,00,72,00,6f,00,70,00,65,00,72,00,\
  74,00,79,00,20,00,27,00,48,00,4b,00,43,00,55,00,3a,00,5c,00,43,00,6f,00,6e,\
  00,74,00,72,00,6f,00,6c,00,20,00,50,00,61,00,6e,00,65,00,6c,00,5c,00,44,00,\
  65,00,73,00,6b,00,74,00,6f,00,70,00,27,00,20,00,54,00,72,00,61,00,6e,00,73,\
  00,63,00,6f,00,64,00,65,00,64,00,49,00,6d,00,61,00,67,00,65,00,43,00,61,00,\
  63,00,68,00,65,00,20,00,2d,00,45,00,72,00,72,00,6f,00,72,00,41,00,63,00,74,\
  00,69,00,6f,00,6e,00,20,00,53,00,74,00,6f,00,70,00,5e,00,29,00,2e,00,54,00,\
  72,00,61,00,6e,00,73,00,63,00,6f,00,64,00,65,00,64,00,49,00,6d,00,61,00,67,\
  00,65,00,43,00,61,00,63,00,68,00,65,00,5e,00,29,00,20,00,2d,00,72,00,65,00,\
  70,00,6c,00,61,00,63,00,65,00,20,00,27,00,28,00,2e,00,2b,00,5e,00,29,00,28,\
  00,5b,00,41,00,2d,00,5a,00,5d,00,3a,00,5b,00,30,00,2d,00,39,00,61,00,2d,00,\
  7a,00,41,00,2d,00,5a,00,5c,00,5c,00,5d,00,5e,00,29,00,2b,00,27,00,5e,00,2c,\
  00,27,00,24,00,32,00,27,00,60,00,29,00,20,00,64,00,6f,00,20,00,63,00,61,00,\
  6c,00,6c,00,20,00,22,00,25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,\
  00,6f,00,74,00,25,00,5c,00,65,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,\
  2e,00,65,00,78,00,65,00,22,00,20,00,2f,00,73,00,65,00,6c,00,65,00,63,00,74,\
  00,2c,00,22,00,25,00,25,00,61,00,22,00,20,00,22,00,00,00
%comspec% /Q /S /C " for /f "usebackq delims=" %%a in (`powershell [System.Text.Encoding]::Unicode.GetString((Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop^).TranscodedImageCache^) -replace '(.+^)([A-Z]:[0-9a-zA-Z\\]^)+'^,'$2'`) do call "%systemroot%\explorer.exe" /select,"%%a" "

Can not start it silent/quiet, with Start "" \B it says "explorer.exe not found"

Patrick
  • 1
  • 1