- Вопрос или проблема
- Встроенные обои
- Слайд-шоу или обои, специфичные для пользователя
- Бонусная информация
- Ответ или решение
- Путь к текущим обоям рабочего стола в Windows 10
- 1. Пути к стандартным обоям
- 2. Пути к обоям по настройкам тем
- 3. Использование сценариев для вывода пути к текущим обоям
- 4. Регистры Windows
- 5. Области применения и ограничения
- Заключение
Вопрос или проблема
Здесь есть еще один вопрос, который позволяет пользователям найти путь к своему текущему фоновому изображению через команду cmd
.
Как мне узнать путь к текущему изображению рабочего стола?
В Windows 10 это больше не работает. Это возвращает только первое изображение в папке, оно не меняется с переходом фонов. Мне нужна аналогичная команда, которая возвращает путь(и) к текущему изображению на рабочем столе, которая действительно работает в Windows 10, если такая существует.
Встроенные обои
Копию текущих обоев можно найти, введя один из нижеприведенных путей в адресную строку проводника Windows.
Путь 1 –
%AppData%\Microsoft\Windows\Themes\CachedFiles
Путь 2 –
%AppData%\Microsoft\Windows\Themes\TranscodedWallpaper
Примечание: TranscodedWallpaper
не имеет расширения файла, хотя это файл изображения JPEG.
Чтобы просмотреть изображение, щелкните правой кнопкой мыши на файле и используйте опцию “Открыть с помощью” или выберите изображение и нажмите Enter.
Это вызовет диалоговое окно “Выбрать приложение для открытия…” или “Как вы хотите открыть этот файл?”. Любой популярный просмотрщик изображений должен подойти — например, “Просмотрщик фотографий Windows” или приложение “Фотографии”.
Кроме того, перетащите файл в вкладку Firefox или окно mspaint
для просмотра/редактирования.
Примечание для Windows 10: У вышеуказанных мест есть ограничения. Например, если обои, которые вы ищете, больше не видны во вкладке «Фон» в приложении «Параметры», вы не сможете их восстановить. Это сработает для ваших последних пяти обоев, но ничего старше. 1
Путь 3 [стандартные обои Windows] –
%SystemRoot%\Web
Проверьте в одной из нижеприведенных папок –
- “4K” для 4K обоев,
- “Screen” для обоев экрана блокировки,
- “touchkeyboard” для цветных абстрактных фонов в Windows 11 2
- “Wallpapers” для стандартных обоев Windows
Путь 4 [обои из установленных тем (Aero и т.д.)] –
%SystemRoot%\Resources\Themes
Путь 5 [обои из установленных для пользователя тем (включая предварительно установленные от OEM)] –
%LocalAppData%\Microsoft\Windows\Themes
Путь 6 [если использовался Просмотрщик фотографий Windows для установки обоев] –
%AppData%\Microsoft\Windows Photo Viewer\
Слайд-шоу или обои, специфичные для пользователя
Если обои установлены с помощью слайд-шоу Windows или вручную установлены пользователем, попробуйте один из ниже приведенных скриптов.
Код будет пытаться извлечь местоположение изображения, декодируя двоичные данные из нижеуказанного ключа в реестре Windows.
Имя ключа: HKEY_CURRENT_USER\Control Panel\Desktop
Имя значения: TranscodedImageCache
Вручную установленные обои – например, щелкните правой кнопкой мыши на изображение и выберите “Установить как обои рабочего стола”
Скрипт 1 – vbs
Чтобы декодировать ключ реестра и просмотреть изображение в проводнике Windows, следуйте инструкциям, указанным на ElevenForum.com или используйте Блокнот, чтобы сохранить vbs код, упомянутый ниже, в файле .vbs
и выполните его.
Только ASCII совместим. Прочитайте предупреждение, написанное ниже кода.
Содержимое файла vbs 5 –
Const HKCU = &H80000001 'HKEY_CURRENT_USER
sComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& sComputer & "\root\default:StdRegProv")
sKeyPath = "Control Panel\Desktop\"
sValueName = "TranscodedImageCache"
oReg.GetBinaryValue HKCU, sKeyPath, sValueName, sValue
sContents = ""
For i = 24 To UBound(sValue)
vByte = sValue(i)
If vByte <> 0 And vByte <> "" Then
sContents = sContents & Chr(vByte)
End If
Next
CreateObject("Wscript.Shell").Run "explorer.exe /select,""" & sContents & """"
Примечание: vbs не сработал у меня, когда я впервые настроил слайд-шоу, но он сработал после смены на следующее изображение в слайд-шоу.
Предупреждение: Этот код vbs не работает, если имя файла содержит не-ASCII символы (символы Unicode, такие как Δ, Й, ק, م, ๗, あ, 叶, 葉, 말).
Скрипт 2 – PowerShell 8
Совместим с ASCII + Unicode
-
Опция A: Запустите код через окно PowerShell
- Откройте Windows PowerShell с помощью меню Пуск или сочетания клавиш Win + X.
- Вставьте код ниже и нажмите Enter.
$TIC=(Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop).TranscodedImageCache
- Вставьте код ниже (второй раз) и нажмите Enter.
[System.Text.Encoding]::Unicode.GetString($TIC) -replace '(.+)([A-Z]:[0-9a-zA-Z\\])+','$2'
Местоположение обоев будет отображено.
-
Опция B: Сохраните код в виде файла
.ps1
и выполните- Откройте ‘Блокнот’ и вставьте три строки кода, упомянутые ниже
- Сохраните новый документ как файл
Wallpaper_path.ps1
[в разделе ‘Тип сохранения:’ выберите “Все типы” – смотрите снимки экрана ниже] - Перейдите к файлу, щелкните правой кнопкой мыши на файле и выберите “Запустить с PowerShell”
Местоположение обоев будет сгенерировано и скопировано в буфер обмена.
$TIC = (Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop).TranscodedImageCache
$result = [System.Text.Encoding]::Unicode.GetString($TIC) -replace '(.+)([A-Z]:[0-9a-zA-Z\\])+','$2'
Set-Clipboard -Value $result
Скрипт 3 – AHK
Совместим с ASCII + Unicode
- Скачайте и установите AutoHotkey
- Откройте Блокнот и сохраните код ниже как файл
.ahk
- Запустите файл
.ahk
- Нажмите Win + W, и местоположение обоев будет отображено в виде сообщения.
#Requires AutoHotkey v2.0
#SingleInstance force
; #HotIf WinActive("ahk_class WorkerW ahk_exe explorer.exe")
; закомментировано - включить ярлык только на рабочем столе
#W::{ ; Win + W
MsgBox "WallpaperPath_v4`n" WallpaperPath_v4()
}
; #HotIf
;-------
; Пользовательские функции
; код ниже был изменен из v1 - https://gist.github.com/raveren/bac5196d2063665d2154#file-aio-ahk-L741
; У этого источника есть код для многомониторных настроек, который здесь не включен.
; Ищите функции `openWallpaperUnderMouse()` и `getMonitorUnderMouse()`, если вам это нужно.
WallpaperPath_v4(key := A_ThisHotkey) {
; Чтение двоичного значения из реестра
regBinary := RegRead("HKEY_CURRENT_USER\Control Panel\Desktop", "TranscodedImageCache") ; 1600 символов
; альтернативный вариант: regBinary := RegRead("HKEY_CURRENT_USER\Control Panel\Desktop", "TranscodedImageCache_000")
; удаление первых 48 символов и создание массива
regArr := StrSplit(SubStr(regBinary, 49))
; переменная, в которой хранится путь
ConvString := ""
Loop regArr.Length {
If Mod(A_Index, 4) != 0 ; генерировать `char` каждый 4-й цикл, когда mod() = 0 (остаток от деления)
Continue ; пропускать остаток цикла, если A_Index это 1 2 3 (не 4) 5 6 7 (не 8) 9…
Else ; в цикле 4, 8… переупорядочите символы как Chr("0x" [3] [4] [1] [2]), Chr("0x" [7] [8] [5] [6])… и так далее
char := Chr("0x" regArr[A_Index - 1] regArr[A_Index] regArr[A_Index - 3] regArr[A_Index - 2])
If char = "" ; char := Chr("0x" 0 0 0 0) последовательные нули приводят к пустой строке
Break ; закончить цикл
Else ConvString .= char ; добавить сгенерированную строку к пути
}
If FileExist(ConvString)
Return ConvString ; вернуть путь к обоям рабочего стола
Else {
MsgBox key ":: WallpaperPath() недействителен!`nПреобразованная строка: " ConvString "`n`nTranscodedImageCache:`n" regBinary,, 262144 ; 262144 = всегда сверху
Exit
}
}
Для других итераций этого кода посетите этот скрипт AHK v2 на GitHub.
Бонусная информация
Если вы ищете местоположение изображений экрана блокировки, посетите этот вопрос на SuperUser.
Примечание о приложениях третьих сторон
Когда приложения третьих сторон, такие как John’s Background Switcher, используются для управления фоновыми изображениями рабочего стола (которые я использовал на своем старом ПК с Win10), они обычно предоставляют возможность просматривать текущие/предыдущие обои рабочего стола (если установлены самим приложением). Проверьте файл справки приложения, чтобы узнать больше.
У меня Windows 10, версия 1709. Один из других ответов заставил меня посмотреть в реестр, и я нашел именно то, что мне нужно в виде открытого текста по адресу
HKEY_CURRENT_USER\Control Panel\Desktop\WallPaper
Декодирование не требуется.
Windows 8 и 10 все еще хранят оригинальный путь к текущему фоновому изображению – а не к кэшированному / транскодированному файлу, как в ответе xypha:
HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache
Тем не менее, Microsoft не хочет, чтобы все было просто: это не обычный текст, поэтому вам нужно декодировать его из двоичного формата.
Сайт Winhelponline собрал несколько скриптов (VBA и PowerShell), которые могут распечатать имя изображения и запустить Explorer, чтобы указать на файл изображения.
http://www.winhelponline.com/blog/find-current-wallpaper-file-path-windows-10/
Чтобы получить “Транскодированный” ПУТЬ в открытом виде, сделайте это в PowerShell:
$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'
Я нашел папку фона (темы) Windows 10 здесь:
%USERPROFILE%\AppData\Local\Microsoft\Windows\Themes\RoamedThemeFiles\DesktopBackground
(Я использую встроенные темы Windows 10, так что может быть, это не работает каждый раз.)
Еще не было упомянуто, но в Редакторе реестра вы можете перейти к:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers
Чтобы найти список имен файлов и местоположений ваших текущих, а также нескольких последних фоновых изображений, которые вы использовали.
Чтобы дополнить ответ xypha, я должен отметить следующее:
Настройки персонализации Windows 10 показывают 5 обоев, используемых недавно, ЕСЛИ ОРИГИНАЛЬНЫЕ ФАЙЛЫ ПО-PRЕДНУЖТУ ОСТАЮТСЯ, но если вы установите обои с помощью приложения “Фотографии” Windows 10, копия изображения будет храниться в этом местоположении (только 1 фото будет сохранено):
%LOCALAPPDATA%\Packages\Microsoft.Windows.Photos_8wekyb3d8bbwe\LocalState\PhotosAppBackground\
Аналогично, для фона экрана блокировки:
%LOCALAPPDATA%\Packages\Microsoft.Windows.Photos_8wekyb3d8bbwe\LocalState\PhotosAppLockscreen\
Если директории не существуют, скорее всего, для каждой версии Windows версия приложения “Фотографии” может быть разной, поэтому учитывайте завершающие символы в имени этой папки: Microsoft.Windows.Photos_8wekyb3d8bbwe
, поищите в родительской директории (%LOCALAPPDATA%\Packages\
), и вы найдете папку, связанную с приложением “Фотографии” Microsoft.Windows.Photos_RandomCharacters
. Моя версия Windows 10 – 1803.
Вы не объяснили, какова ТОЧНАЯ цель этого, поэтому я могу дать несколько советов на основании догадки: вы хотите изменить свои обои при определенных обстоятельствах (например, одни обои каждый раз, когда вы перезапускаете компьютер) или использовать пользовательский файл в качестве обоев.
В Windows 7 обои обычно находились в %AppData%\Microsoft\Windows\Themes\TranscodedWallpaper
.
В Windows 10 вы найдете их в %AppData%\Microsoft\Windows\Themes\CachedFiles
.
Вы также можете проверить реестр по адресу
HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache
но обратите внимание на предупреждения ниже о программах, которые НЕ записывают файл на диск!
Если вы хотите создать свой собственный CMD-скрипт, это может быть ненадежно, ЕСЛИ вы устанавливаете обои не из Windows, а из сторонней программы. Например, если я вижу красивое изображение в своем браузере, я устанавливаю его в качестве обоев прямо оттуда. То же самое касается IrfanView. Я могу легко назвать еще 10 популярных программ, которые могут изменить обои на пользовательский путь.
Учтите, что некоторые программы изменяют обои, не записывая файл на диск. Это можно сделать, подсоединившись к окну рабочего стола Microsoft Windows и рисуя прямо на его холсте. Так анимации GIF/AVI отображаются на рабочем столе.
Есть еще один вопрос, если вы создаете свой собственный скрипт: Как вы обрабатываете изображения, у которых другое соотношение сторон, чем у вашего рабочего стола, или когда разрешение рабочего стола меняется?
Решением (если я правильно угадал вашу проблему) может быть использование программы, такой как John’s Background Switcher или BioniX Desktop Background Changer. Последняя гораздо более настраиваема и может управляться через командную строку. Она также имеет автоматическое определение для обнаружения наилучшего способа изменения размера изображения (заполнение/соответствие/плитка). BioniX также может отображать GIF без записи чего-либо на диск (как объяснялось выше).
Еще одним хорошим способом будет использование опции “Закрепить на папке”.
Установите BioniX на смену обоев каждые 60 секунд (не беспокойтесь, вы не увидите новые обои каждые 60 секунд, так как будете использовать только один файл). Установите BioniX на закрепление на любой папке (скажем, C:\Wallpapers
). Внутри этой папки вы помещаете один файл под названием, например, My Wallpaper.jpg
. BioniX будет использовать этот файл в качестве обоев каждые 60 секунд. Теперь каждый раз, когда вы хотите изменить обои, вы заменяете старый My Wallpaper.jpg
на ваш новый файл. BioniX увидит изменения, которые вы внесли в папку, и применит новый файл (в течение 60 секунд).
Сообщите нам, что вы хотите достичь с помощью своего скрипта, чтобы получить лучшее решение.
Ответ или решение
Путь к текущим обоям рабочего стола в Windows 10
В операционной системе Windows 10 пользователи могут сталкиваться с необходимостью узнать путь к текущим обоям рабочего стола. Это может быть важно в различных контекстах, от настройки рабочего стола до автоматизации задач с помощью скриптов. Данное руководство описывает несколько способов нахождения путей к текущим обоям для различных случаев использования.
1. Пути к стандартным обоям
Для доступа к стандартным обоям, используйте следующие пути в проводнике Windows:
-
Кэшированные файлы обоев
%AppData%\Microsoft\Windows\Themes\CachedFiles
-
Текущие обои
%AppData%\Microsoft\Windows\Themes\TranscodedWallpaper
Примечание: Файл TranscodedWallpaper не имеет расширения, это файл изображения формата JPEG. Для его открытия, щелкните правой кнопкой мыши и выберите "Открыть с помощью", затем выберите приложение для просмотра изображений, например, "Фото" или "Просмотрщик фотографий Windows".
2. Пути к обоям по настройкам тем
- Стандартные обои Windows
%SystemRoot%\Web\Wallpapers
- Обои тем
%SystemRoot%\Resources\Themes
- Персонализированные темы для пользователя
%LocalAppData%\Microsoft\Windows\Themes
Теперь, если пользователи применяют различные темы или обои, эти места могут помочь найти их образы.
3. Использование сценариев для вывода пути к текущим обоям
Зачастую обои устанавливаются с помощью слайд-шоу или вручную. В таких случаях можно использовать скрипты для определения текущих обоев.
Пример скрипта VBA (VBScript)
Вы можете создать файл с расширением .vbs
и использовать следующий код для получения пути к текущим обоям:
Const HKCU = &H80000001 'HKEY_CURRENT_USER
sComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & sComputer & "\root\default:StdRegProv")
sKeyPath = "Control Panel\Desktop\"
sValueName = "TranscodedImageCache"
oReg.GetBinaryValue HKCU, sKeyPath, sValueName, sValue
sContents = ""
For i = 24 To UBound(sValue)
vByte = sValue(i)
If vByte <> 0 And vByte <> "" Then
sContents = sContents & Chr(vByte)
End If
Next
CreateObject("Wscript.Shell").Run "explorer.exe /select,""" & sContents & """"
Пример скрипта PowerShell
Для более продвинутых пользователей можно воспользоваться PowerShell, чтобы получить доступ к регистру и извлечь путь:
$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'
4. Регистры Windows
Вы также можете напрямую обращаться к редактору реестра для получения информации о текущих обоях:
- Обратите внимание на путь в реестре:
HKEY_CURRENT_USER\Control Panel\Desktop\WallPaper
Это место хранит оригинальный путь текущих обоев, не требуя их декодирования.
5. Области применения и ограничения
Следует помнить, что если обои были установлены программами третьих сторон или если оригинальный файл был удален, может потребоваться дополнительный поиск или восстановление изображений.
Заключение
Существует множество путей для нахождения текущих обоев рабочего стола в Windows 10, и выбор определенного метода зависит от ваших потребностей. Воспользуйтесь приведенными выше шагами, чтобы найти изображение, которое вас интересует, или автоматизировать этот процесс с помощью скриптов. Если у вас остались вопросы или вам нужна дополнительная информация, не стесняйтесь обратиться к специализированным форумам или сообществам пользователей Windows.