Средство просмотра фотографий в Windows Server 2019/2016

Средство просмотра фотографий в Windows Server 2019/2016

PhotoViewer

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали, как изменить формат файла в Windows системах. Движемся дальше и сегодня я вас научу возвращать в видимый состав Windows Server 2016 или Windows Server 2019, такого компонента Photo Viewer ( средство просмотра фотографий Windows). Он как выяснилось отсутствует в системе есть, но воспользоваться вы им не можете пока не произведете некоторые манипуляции, в очередной раз удивляюсь для чело Microsoft опять все усложнило.

Возможности рабочего стола в Windows Server 2019

Сразу оговорюсь, что все описанные действия актуальны и для Windows Server 2016.

Ранее мы с вами устанавливали Windows Server 2012 R2, это хорошая операционная система, которая после инсталляции имеет минимальный функционал, который можно расширять за счет ролей и компонентов. Когда вы установите роль удаленных рабочих cтолов и запустите пользователей на ваш RDS сервер, то первое на что они пожалуются, это будет отсутствие компонента средства просмотра фотографий, к которому они привыкли на клиентских версиях. И это нормально, кому удобно открывать файлы формата jpeg, png, bmp и другие через встроенный, классический paint.

Как включить Photo Viewer в Windows Server 2016

Для решения данной проблемы мы устанавливали компонент "Возможности рабочего стола (Desktop Experience)". Возможности рабочего стола возвращал в систему:

  • Photo Viewer ( средство просмотра фотографий Windows)
  • Средство очистки диска (Disk Cleanup)
  • Проигрыватель Media Player
  • Темы оформления

Все это великолепно, до тех пор когда вы не установите службу удаленных рабочих столов на Windows Server 2019, посмотрев список компонентов, вы не обнаружите "Возможности рабочего стола (Desktop Experience)", по простой причине, что он якобы уже устанавливается во время установки Windows с графическим режимом. Но вы же понимаете, что пользователям по барабану на вашу ситуацию, им нужна комфортная работа на хостах RDSH, и тут у вас два выхода, либо поставить сторонний софт, что не очень хорошо, дополнительная сущность для обновления, и второй вариант раскопать внутренности Windows Server 2019 и попытаться найти там встроенный, но спрятанный PhotoViewer. Я пошел по второму варианту.

Как вернуть Photo Viewer в Windows Server 2019/2016

По умолчанию в Windows Server 2019 не зарегистрирована специальная библиотека отвечающая за работу компонента "Средство просмотра фотографий Windows". Перейдите в:

C:\Program Files (x86)\Windows Photo Viewer

Тут есть библиотека PhotoViewer.dll, которая и отвечает за "Средство просмотра фотографий Windows". Чтобы ее зарегистрировать, вам нужно открыть командную строку от имени администратора и ввести:

regsvr32 “C:\Program Files (x86)\Windows Photo Viewer\PhotoViewer.dll”

Регистрация Photo Viewer в Windows Server 2019

Теперь, когда мы зарегистрировали необходимую .dll, нам нужно импортировать ключи реестра, которые добавят Windows Photo Viewer в меню "Открыть с помощью" и установить ассоциации файлов по умолчанию для .jpg, .jpeg и .jpe файлы. Кстати так же отдельно зарегистрировать библиотеку PhotoViewer.dll вы можете и с помощью моего ключа реестра, который будет в составе пакета, описанного ниже. Вот его содержимое:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Applications\photoviewer.dll]

[HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell]

[HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open]
"MuiVerb"="@photoviewer.dll,-3043"

[HKEY_CLASSES_ROOT\Applications \photoviewer.dll\shell\open\command]
@=hex(2):25,00,53,00,79,00,73, 00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00, 65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
6e,00,64,00,6c,00,6c,00,33,00,32, 00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
00,50,00,72,00,6f,00,67,00,72,00, 61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
25,00,5c,00,57,00,69,00,6e,00,64, 00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
00,74,00,6f,00,20,00,56,00,69,00, 65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
6f,00,74,00,6f,00,56,00,69,00,65, 00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
00,22,00,2c,00,20,00,49,00,6d,00, 61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
5f,00,46,00,75,00,6c,00,6c,00,73, 00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
00,31,00,00,00

[HKEY_CLASSES_ROOT\Applications \photoviewer.dll\shell\open\DropTarget]
"Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"

[HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print]

[HKEY_CLASSES_ROOT\Applications \photoviewer.dll\shell\print\command]
@=hex(2):25,00,53,00,79,00,73,00, 74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00, 65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
6e,00,64,00,6c,00,6c,00,33,00,32, 00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
00,50,00,72,00,6f,00,67,00,72,00, 61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
25,00,5c,00,57,00,69,00,6e,00,64, 00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
00,74,00,6f,00,20,00,56,00,69,00, 65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
6f,00,74,00,6f,00,56,00,69,00,65, 00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
00,22,00,2c,00,20,00,49,00,6d,00, 61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
5f,00,46,00,75,00,6c,00,6c,00,73, 00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
00,31,00,00,00

[HKEY_CLASSES_ROOT\Applications \photoviewer.dll\shell\print\DropTarget]
"Clsid"="{60fd46de-f830-4894-a628-6fa81bc0190d}"

Чуть не забыл для любителей PowerShell, есть возможность подключить библиотеки и с его помощью. Создайте скрипт с таким содержимым, только не забудьте отключить защиту запуска неподписанных скриптов или же откройте PowerShell ISE в режиме администратора и введите:

If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll" -ItemType RegistryKey -Force}
If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell" -ItemType RegistryKey -Force}
If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open" -ItemType RegistryKey -Force}
Set-ItemProperty -path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open" -Name "MuiVerb" -Type "String" -Value "@photoviewer.dll,-3043"
If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\command")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\command" -ItemType RegistryKey -Force}
Set-ItemProperty -path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\command" -Name "(Default)" -Type "ExpandString" -Value "%SystemRoot%\System32\rundll32.exe `"%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll`", ImageView_Fullscreen %1"
If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\DropTarget")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\DropTarget" -ItemType RegistryKey -Force}
Set-ItemProperty -path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\DropTarget" -Name "Clsid" -Type "String" -Value "{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print" -ItemType RegistryKey -Force}
If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print\command")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print\command" -ItemType RegistryKey -Force}
Set-ItemProperty -path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print\command" -Name "(Default)" -Type "ExpandString" -Value "%SystemRoot%\System32\rundll32.exe `"%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll`", ImageView_Fullscreen %1"
If ( -Not ( Test-Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print\DropTarget")){New-Item -Path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print\DropTarget" -ItemType RegistryKey -Force}
Set-ItemProperty -path "Registry::HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\print\DropTarget" -Name "Clsid" -Type "String" -Value "{60fd46de-f830-4894-a628-6fa81bc0190d}"

Подключение Photo Viewer через PowerShell

Теперь в контекстном меню у вас уже будет доступен пункт "Открыть с помощью - Просмотр фотографий Windows"

Выбор средство просмотра фотографий в Windows из списка

Скачать ключи реестра вы можете по ссылке (Раздел "Дополнения к Windows" 46 пункт )

После скачивания вам нужно распаковать архив, в итоге у вас будет вот такой состав.

  • ON_Windows_2016_2019_Photo_Viewer.reg - Добавляет нужные ключи реестра для ассоциации, запускается первым.
  • PhotoViewer.all.reg - сопоставляет ассоциации для bmp, jpe, jpeg, jpg, png, tif, tiff со средством просмотра фотографий Windows (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • PhotoViewer.bmp.reg - сопоставляет ассоциации для bmp (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • PhotoViewer.jpe.reg - сопоставляет ассоциации для jpe (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • PhotoViewer.jpeg.reg - сопоставляет ассоциации для jpeg (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • PhotoViewer.jpg.reg - сопоставляет ассоциации для jpg (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • PhotoViewer.png.reg - сопоставляет ассоциации для png (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • PhotoViewer.tif.reg - сопоставляет ассоциации для tif (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • PhotoViewer.tiff.reg - сопоставляет ассоциации для tiff (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей)
  • Register_Only_PhotoViewer.dll.reg - регистрирует библиотеку PhotoViewer.dll

Восстановление Photo Viewer в Windows Server 2019

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations

По умолчанию, там есть два ключа отвечающие за tif и tiff.

Ключи реестра отвечающие за ассоциации файлов с Photo Viewer

По их аналогии я создаю ключи для:

  • ".jpg"="PhotoViewer.FileAssoc.Jpeg"
  • ".wdp"="PhotoViewer.FileAssoc.Wdp"
  • ".jfif"="PhotoViewer.FileAssoc.JFIF"
  • ".dib"="PhotoViewer.FileAssoc.Bitmap"
  • ".png"="PhotoViewer.FileAssoc.Png"
  • ".tiff"="PhotoViewer.FileAssoc.Tiff"
  • ".jxr"="PhotoViewer.FileAssoc.Wdp"
  • ".bmp"="PhotoViewer.FileAssoc.Bitmap"
  • ".jpe"="PhotoViewer.FileAssoc.Jpeg"
  • ".jpeg"="PhotoViewer.FileAssoc.Jpeg"
  • ".gif"="PhotoViewer.FileAssoc.Gif"
  • ".tif"="PhotoViewer.FileAssoc.Tiff"

Запустите файл "ON_Windows_2016_2019_Photo_Viewer.reg". Подтвердите добавление ключа реестра.

Добавление ключа реестра средство просмотра фотографий в Windows для

Успешное добавление ключа реестра в Windows Server 2019

В результате чего у вас прибавится ключей реестра.

Добавленные ключи реестра для ассоциации файлов jpeg, jpg, png, bmp, tif, tiff для Photo Viewer

Далее вы можете уже запускать файлы под свои форматы, или же запустить PhotoViewer.all.reg, который сопоставит ассоциации для bmp, jpe, jpeg, jpg, png, tif, tiff со средством просмотра фотографий Windows (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей). В результате файлы данных форматов будут открываться для пользователей в привычном режиме.

Программы по умолчанию в Windows Server 2019

Как сделать Photo Viewer программой по умолчанию через групповую политику

Еще можно сделать отдельную политику, которая будет делать ассоциацию файлов jpeg, jpg, png, bmp, tif, tiff  со средством просмотра фотографий через GPO.

Единственный момент, что данный метод будет действовать исключительно на новых пользователей RDS фермы, так сделала Microsoft и не забываем, что вы так же должны активировать библиотеку PhotoViewer.dll

Суть метода в использовании XML файла (DefAppAssoc.xml) в котором будут прописаны все ассоциации. Данный файл будет импортироваться пользователю при входе в систему. Сам метод я подробно описывал, вот пример такого файла.

Настройка Photo Viewer через групповую политику

Как дополнительный вариант, вы можете через PowerShell или ту же групповую политику импортировать мои reg файлы, которые так же установят ассоциации графических файлов со средством просмотра фотографий. На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *