Есть ли запись в реестре Windows для исходного фонового местоположения?

Есть ли запись в реестре Windows для исходного фонового местоположения? В «HKEY_CURRENT_USER\Панель управления\Рабочий стол» значение «Обои» равно «C:\Users\CURRENTUSER\AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg».


person Bob    schedule 01.12.2010    source источник
comment
Что вы подразумеваете под исходным фоновым местоположением? И зачем вам эта информация?   -  person In silico    schedule 01.12.2010
comment
Да, это путь к текущим обоям, отображаемым на вашем рабочем столе (CURRENT_USER). Что вы ищете вместо этого?   -  person Cody Gray    schedule 01.12.2010
comment
Я знаю, что отображаются текущие обои, однако, когда окна меняют фон, создается копия файла из другого места. Вот что такое TranscodedWallpaper.jpg: скопированный файл. Это позволяет вам сделать любое изображение изображением рабочего стола, и Windows не нужно беспокоиться о том, что что-то случится с изображением позже.   -  person Bob    schedule 01.12.2010


Ответы (3)


На самом деле это зависит от того, как туда попали обои.

Это работает в Windows 7, когда обои устанавливаются через панель управления и включено слайд-шоу обоев:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\General\WallpaperSource

Однако в других ситуациях этот ключ может не существовать или быть устаревшим.

(Не обращайте внимания на то, что в пути к нему есть «Internet Explorer». Кто знает, почему это так, но IE здесь не при чем!)

(FWIW, я нашел/использовал это при создании контекстного меню рабочего стола (через VBScript) для удаления текущих обоев. Вот это, если это полезно.)

person Leo Davidson    schedule 01.12.2010
comment
Это именно то, что я искал. Я удивлен, что он скрывается в записях Internet Explorer. Большое Вам спасибо. - person Bob; 01.12.2010

В gpedit параметр «Активные обои для рабочего стола» в разделе «Конфигурация пользователя|Административные шаблоны|Рабочий стол|Активный рабочий стол» устанавливает фон. Не обращайте внимания на то, что он находится в разделе Active Desktop, так как он по-прежнему работает с отключенным Active Desktop. Active Desktop необходимо включать только при использовании JPG или HTML в качестве фона.

person Deepu    schedule 23.08.2014

Вы можете написать собственный сценарий vb и меню правой кнопки мыши.

--- Создайте файл reg и дважды щелкните.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\DesktopWallpaperLocation]
"icon"="imageres.dll,-5346"
@="Desktop Wallpaper Location"

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\DesktopWallpaperLocation\command]
@=hex(2):77,00,73,00,63,00,72,00,69,00,70,00,74,00,20,00,22,00,25,00,77,00,69,\
  00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,\
  33,00,32,00,5c,00,57,00,61,00,6c,00,6c,00,70,00,61,00,70,00,65,00,72,00,50,\
  00,61,00,74,00,68,00,2e,00,76,00,62,00,73,00,22,00,00,00

Это создаст ссылку на правое меню, например «Расположение обоев рабочего стола», и оно откроется, как выбрано в проводнике.

--- Файл сценария Vb (отредактированный для нескольких мониторов).

Const HKCU = &H80000001 'HKEY_CURRENT_USER

sComputer = "."

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
            & sComputer & "\root\default:StdRegProv")

sKeyPath = "Control Panel\Desktop\"
sValueName = "TranscodedImageCache_001"
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

arrValues = Split(sContents, "\\")
b = ubound(arrValues)
result = arrValues(0)

CreateObject("Wscript.Shell").Run "explorer.exe /select,""" & result & """"

sValueName = "TranscodedImageCache_000"
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

arrValues = Split(sContents, "\\")
b = ubound(arrValues)
result = arrValues(0)

CreateObject("Wscript.Shell").Run "explorer.exe /select,""" & result & """"

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

arrValues = Split(sContents, "\\")
b = ubound(arrValues)
result = arrValues(0)

CreateObject("Wscript.Shell").Run "explorer.exe /select,""" & result & """"

Сохраните как файл *.vbs и скопируйте в папку c:\windows\system32. (c:\windows\system32\WallpaperPath.vbs)

person besimler    schedule 19.12.2019