C #, Как получить текущие обои для рабочего стола в win7 и win10, используя одинаковые коды? - PullRequest
0 голосов
/ 29 июня 2018

Если я установлю картинку в качестве обоев для рабочего стола, а затем удалю эту картинку. Как я могу получить текущий файл изображения рабочего стола? Я знаю, что ключ реестра " HKEY_CURRENT_USER \ Панель управления \ Рабочий стол \ Обои " содержит путь. Но отличается между win7 и win10.

  • В win7 значение ключа "WallPaper" всегда равно " C: \ Users \ xxx \ AppData \ Roaming \ Microsoft \ Windows \ Themes \ TranscodedWallpaper.jpg "
  • В win10 значение ключа «WallPaper» - это путь к картинке (например, « C: \ Users \ xxx \ Desktop \ 1.jpg »). Когда я удаляю этот файл, я не могу найти его по этому пути.

Итак, я не могу прочитать ключ реестра, чтобы получить путь к обоям, он бесполезен в win10. У кого-нибудь есть какие-то решения?

1 Ответ

0 голосов
/ 29 июня 2018

Когда вы устанавливаете изображение в качестве фона рабочего стола, оно будет преобразовано в соответствии с вашими настройками экрана и положения, такими как заливка, масштабирование, подгонка и т. Д. Путь к исходному изображению записывается в двоичном значении с именем TranscodedImageCache в следующем реестре. ключ:

HKEY_CURRENT_USER\Control Panel\Desktop

Путь к исходному изображению в виде двоичного значения в реестре.

Чтобы извлечь путь к изображению из значения TranscodedImageCache, вам нужно запустить этот скрипт:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...