web-dev-qa-db-ja.com

Windows 8の場合、どのようにして現在のデスクトップイメージへのパスを見つけることができますか

最近Windows 8にアップグレードしたため、現在のデスクトップの壁紙画像を取得するためのスクリプトが壊れています。

Windows 7の場合 現在のデスクトップイメージへのパスを見つけるにはどうすればよいですか? 、これはうまく機能します。ただし、このレジストリキーには常に

C:\Windows\web\wallpaper\Windows\img0.jpg

Windows 8で使用される新しいレジストリキーは何ですか?

私は2つの可能な解決策を見つけました。

まず、このキーには、Base64でエンコードされたパスのようなものが含まれます。

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers\Images\ID2

そして、Base64のような「[SlideShow]」セクションも含む「カスタムテーマプロパティファイル」があります。

C:\Users\Scott\AppData\Local\Microsoft\Windows\Themes\Custom.theme
10

両方の下にある2つのレジストリキーには、現在の壁紙画像の元のパスが格納されています。

HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache
HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache_000

それらはUnicode形式であり、それをデコードすると、現在の壁紙画像への完全なパスが得られます。

10
  1. Windows実行コマンドに移動(WinLogo + R)
  2. 入力:%AppData%
  3. 「ローミング」フォルダで、「Microsoft」、「Windwows」、「Themes」、最後に「CachedFiles」に移動します
  4. 壁紙ファイルをコピーします。
3
Gilbert

HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper REG_SZ(文字列)値。これにより、現在使用中のTranscodedWallpaper.jpgへのパスが表示されます。

2
Karan

Windows 8および8.1(および報告によると10)で、Windowsピクチャービューアーから壁紙を設定した場合(ビューアーで写真を開き、コンテキストメニューの[デスクトップの壁紙に設定]をクリックして)、その場所は

%AppData%\Roaming\Microsoft\Windows Photo Viewer\Windows Photo Viewer Wallpaper.jpg
2
Artanis

Windows 8以降の場合、このvbsファイルを起動できます。

https://Gist.github.com/raveren/ab475336cc69879a378b

または、次のautohotkeyスクリプトを使用します。

http://www.autohotkey.com/board/topic/111813-open-current-wallpaper-under-mouse-in-windows-8/

どちらも私が作成しました。

2
Raveren
  1. C:\Users\<USERNAME>\AppData\Roaming\Microsoft\Windows\Themesにアクセスします。
  2. TranscodedWallpaperのコピーを作成
  3. コピーの名前を<NAME>.JPGに変更します

Windows 10でテスト済み

1
keinabel

私の状況では、壁紙が循環する画像の巨大なフォルダがあります。しばらくすると飽きてしまい、削除したい場合があります。または、画像の説明が含まれている可能性があるため、画像の名前が何なのか疑問に思うことがあります。

上記のフィードバックに基づいて、2つのスクリプトを作成しました。1つは現在の画像パスを取得するスクリプトで、もう1つは削除するスクリプトです。これはWindows 10でのみテストされています。

画像のパスを取得(getwallpaper.ps1)

$bytes=(New-Object -ComObject WScript.Shell).RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache")
$wallpaperpath=[System.Text.Encoding]::Unicode.GetString($bytes[24..($bytes.length-1)])
$wallpaperpath=$wallpaperpath.substring(0, $wallpaperpath.IndexOf("jpg", 0, $wallpaperpath.Length)+3)
write-output $wallpaperpath
Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');

画像を削除する(deletewallpaper.ps1)

$bytes=(New-Object -ComObject WScript.Shell).RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache")
$wallpaperpath=[System.Text.Encoding]::Unicode.GetString($bytes[24..($bytes.length-1)])
$wallpaperpath=$wallpaperpath.substring(0, $wallpaperpath.IndexOf("jpg", 0, $wallpaperpath.Length)+3)
write-output $wallpaperpath
Write-Host -NoNewLine 'Delete the file (y=yes)?'
$KeyOption = 'Y','N'
while ($KeyOption -notcontains $KeyPress.Character) {
 $KeyPress = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
 if($KeyPress.Character -eq 'y') { Remove-Item $wallpaperpath }
}
Write-Host
[Environment]::Exit(0)
1
Chris Smith