Средство просмотра фотографий в Windows Server 2019/2016
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали, как изменить формат файла в Windows системах. Движемся дальше и сегодня я вас научу возвращать в видимый состав Windows Server 2016 или Windows Server 2019, такого компонента Photo Viewer ( средство просмотра фотографий Windows). Он как выяснилось отсутствует в системе есть, но воспользоваться вы им не можете пока не произведете некоторые манипуляции, в очередной раз удивляюсь для чело Microsoft опять все усложнило.
Возможности рабочего стола в Windows Server 2019
Ранее мы с вами устанавливали Windows Server 2012 R2, это хорошая операционная система, которая после инсталляции имеет минимальный функционал, который можно расширять за счет ролей и компонентов. Когда вы установите роль удаленных рабочих cтолов и запустите пользователей на ваш RDS сервер, то первое на что они пожалуются, это будет отсутствие компонента средства просмотра фотографий, к которому они привыкли на клиентских версиях. И это нормально, кому удобно открывать файлы формата jpeg, png, bmp и другие через встроенный, классический paint.
Для решения данной проблемы мы устанавливали компонент "Возможности рабочего стола (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". Перейдите в:
Тут есть библиотека PhotoViewer.dll, которая и отвечает за "Средство просмотра фотографий Windows". Чтобы ее зарегистрировать, вам нужно открыть командную строку от имени администратора и ввести:
Теперь, когда мы зарегистрировали необходимую .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\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}"
Теперь в контекстном меню у вас уже будет доступен пункт "Открыть с помощью - Просмотр фотографий Windows"
После скачивания вам нужно распаковать архив, в итоге у вас будет вот такой состав.
- 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
Для того, чтобы ваша Windows Server 2019 могла правильно использовать средство просмотра фотографий в Windows, вам нужно добавить ключи реестра отвечающие за эти ассоциации. Сама ветка реестра находится по пути:
По умолчанию, там есть два ключа отвечающие за tif и tiff.
По их аналогии я создаю ключи для:
- ".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". Подтвердите добавление ключа реестра.
В результате чего у вас прибавится ключей реестра.
Далее вы можете уже запускать файлы под свои форматы, или же запустить PhotoViewer.all.reg, который сопоставит ассоциации для bmp, jpe, jpeg, jpg, png, tif, tiff со средством просмотра фотографий Windows (Применяется сразу и не требует перезагрузку сервера, применяется для всех пользователей). В результате файлы данных форматов будут открываться для пользователей в привычном режиме.
Как сделать Photo Viewer программой по умолчанию через групповую политику
Еще можно сделать отдельную политику, которая будет делать ассоциацию файлов jpeg, jpg, png, bmp, tif, tiff со средством просмотра фотографий через GPO.
Суть метода в использовании XML файла (DefAppAssoc.xml) в котором будут прописаны все ассоциации. Данный файл будет импортироваться пользователю при входе в систему. Сам метод я подробно описывал, вот пример такого файла.
Как дополнительный вариант, вы можете через PowerShell или ту же групповую политику импортировать мои reg файлы, которые так же установят ассоциации графических файлов со средством просмотра фотографий.
Как сделать Photo Viewer программой по умолчанию в Windows Server 2022 или Windows 12
В Windows Server 2022 и Windows 12, перестали работать описанные ранее ключи реестра, и файл XML ассоциаций, так же не работает для старых профилей если у них уже были выставлены ассоциации. Но я уже стрелянный воробей и нашел прекрасное решение:
- Вы должны зарегистрировать библиотеку средства просмотра, это я показывал выше
- Далее вы должны взять мой скрипт и сопоставить для нужных вам раширений использование Windows Photo Viewer
- Ну и иметь список серверов на которых вы хотите это сделать, но можете и локально.
Давайте посмотрим с чем у меня связан формат PNG, который я ранее просил операционную систему Windows Server 2022 открывать через средство просмотра фотографий.
Видим, что это pngfile, не понятное какое-то приложение😅. Давайте тперь поймем с кем связана запись pngfile.
В результате видно, что за это отвечает приложение:
Зная это выполним вы можете этим управлять, например сделать для формата .jpeg то же приложение, для этого пишем:
Для массового исправления, например на RDS ферме используем мой скрипт PowerShell:
#Скрипт с сайта https://pyatilistnik.org/ разработал Иван Сёмин, разрешается его копировать на другие сайты только с указанием активной ссылки на источник
$Servers = Get-Content "C:\Temp\RDS\servers.txt"
#Для png
ForEach ($Server in $Servers) {
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype pngfile=%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1
}
}
#Для jpeg
ForEach ($Server in $Servers) {
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype jpegfile=%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1
}
}
#Для gif
ForEach ($Server in $Servers) {
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype giffile=%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1
}
}
Для того, чтобы массово проверить, текущие настройки на списке удаленных серверов, можете использовать вот такой PowerSherll скрипт:
$Servers = Get-Content "C:\Temp\RDS\servers-test.txt"
#Для png
ForEach ($Server in $Servers) {
Write-Host "Server $Server"
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype pngfile
}
}
#Для jpeg
ForEach ($Server in $Servers) {
Write-Host "Server $Server"
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype jpegfile
}
}
#Для gif
ForEach ($Server in $Servers) {
Write-Host "Server $Server"
Invoke-Command -ComputerName $Server -ScriptBlock {
cmd /c ftype giffile
}
}
На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Спасибо! Очень помогло!
Рад, что смог вам помочь!
зачем столько стараний?, что бы включить галимый PhotoViewer?
или боитесь сточки — для домашнего использования? так сейчас все подключаются из дума…
Все просто, на RDS ферме люди привыкли к нему.
Здравствуйте.
Напишу здесь, но это относится к целому сайту в общем.
Вы мой спаситель!
Практически всегда, когда возникает какая либо проблема — ответ обычно есть на двух сайтах. И Ваш «Пятилистник» — один из них.
Отдельно хочу отметить прекрасное оформление ваших статей:Форматирование текстов, выделение важного и т.д.
Очень много разных ваших «очерков» у меня распечатаны и стоят в шкафу;-)
Премного благодарен!!!
С запуском Просмотрщика фотографий также все получилось — Спасибо!
Рад, что вам помог и сайт нравится в целом.
Куда вводить содержимое реестра?
Большое спасибо за ваше решение, помогло и решило мои проблемы. Единственно дополню незначительно, «ЭСКИЗЫ ПАПОК» порой нужны то же, необходимо сделать= Параметры Проводника-Вид-снять флажок «Всегда отображать значки, а не эскизы»
Ну вот все написано грамотно и разжевано, для тех, кто чем то всегда не доволен, просто этот материал не для вас, оаз такие умные, нечего здесь делать))) А так все очень здорово и понятно!)
Огромное Спасибо! Подскажите ещё, как сделать чтоб при выделении нескольких файлов рисунков и через пкм нажать «Печать» выходило окно «Печать изображений» где можно выбрать размер картинки, сколько печатать на листе и т.п. как в Windows 10.
Помогите, пожалуйста, понять эту строку:
[HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open]
«MuiVerb»=»@photoviewer.dll,-3043»
Что значит Минус и 3043,
если иконки под идентификатором 3043 нет в photoviewer.dll?
Скачать ключи реестра вы можете по ссылке
(Раздел «Дополнения к Windows» 46 пункт)
Только пункт 48
Всем привет!
Как на сервере решить следующие проблемы:
1. смотреть фото в проводнике: как это делается стандартно в W10 (используя SVG-See с Github и WEB Codec с Github)?
Или это невозможно на сервере в отличие от W10?
2. Почему локально на сервере не отображаются в браузере Font Awesome (именно анимация!, сами символы отображаются) и Animate с Github (это библиотека анимации обьектов)? А снаружи они на сайте видны и значит работают корректно!
Комп на котором несколько сайтов перевели с W10LTSC на WS2022 std и я имея локальный доступ к компу, иногда программирую на нем код для этих сайтов под WordPress.
P.S На W10LTSC у меня таких проблем не было вообще.
Что корячиться только удаленно?
Или как-то можно решить эти вопросы?
Спасибо за возможную помощь.
Здравствуйте, исправьте пожалуйста
Скачать ключи реестра вы можете по ссылке (Раздел «Дополнения к Windows» 46 пункт )
Пункт 48 а не 46
Спасибо Иван, не первый раз выручаешь
Проверьте пожалуйста Ваши reg-файлы! В файле «PhotoViewer.all.reg» несколько раз повторяется строка «Windows Registry Editor Version 5.00». А она должна быть строго в одном месте, — в начале файла. Спасибо за Ваши труды!