пятница, 4 декабря 2020 г.

Кастомизация пользовательского окружения Windows. Startmenulayout.

Давно обещал сообществу написать стать/несколько статей по кастомизации пользовательского окружения. Сразу оговорюсь, что я буду описывать большую часть настроек, которые делаются локально/в default профиль. Почему? Потому что очень часто бывает диалог:

- А как сделать вот эту штуку юзеру?

- Через GPO

- У меня нет прав в GPO

От части, я тоже в свое время столкнулся с подобным и костылил все настройки локально, но в будущем большая часть настроек была все же перенесена в GPO, когда такие права появились.

Из полезного, можно почитать про mandatory profile (ссылка), default profile (реестр, файлы - об этом позже), lgpo (ссылка)

Итак, о чем сегодня пойдет речь - о внешнем виде меню пуск и тут сразу же в ход пойдут небольшие костыли и опыт. Наверное, по настройке меню пуск есть 100500 статей, но с чего-то надо было начинать. 

четверг, 16 июля 2020 г.

Bitlocker+Legacy-MBR

Сегодня ТП пришла с проблемой - налили ноут HP, включили Bitlocker, задали ПАРОЛЬ 12345678, при каждой перезагрузке просит recovery key. 

Такое уже проходили и сразу на ум пришло, что:
1. TPM либо нет, либо отключен, но у нас разрешен пароль, если нет TPM
2. Раз падает в recovery - 146% налили ноут в legacy

Пункт два подтвердился. Заходим в Панель управления, настройки Bitlocker и делаем Приостановить защиту. Далее в cmd от Администратора

 mbr2gpt /convert /allowfullos

Перезагружаемся, выставляем в BIOS грузиться в UEFI. Система грузится в UEFI, отлично.
Идем обратно в Панель управления, настройки Bitlocker и нажимаем Возобновить Bitlocker и получаем ошибку. Подумалось, что проблема из-за того, что был установлен пароль с последовательностью, а TPM не позволяет использовать последовательность из 3х цифр для PIN кода. Жму изменить PIN и тоже получаю ошибку.
Идем в mmc - управление TPM и видим, что TPM не готов к работе. Жмем подготовить, получаем сообщение, что TPM готов к работе, но с ограничениями. Жму сбросить, ребут - без изменений, не готов к работе.
Идем в настройки BIOS (а так как я пока что работаю из дома, попросил показать по видео, что там происходит). А там конечно же не стоит галка TPM State, включаем галку и TPM говорит, что готов к работе.
Идем обратно в панель управления, нажимаем Возобновить Bitlocker и получаем ошибку "Системе на удалось найти указанный файл". Хмммм. Пробуем через cmd от Администратора

 manage-bde -status c:

Говорит, что полностью зашифровано, но приостановлено.

 manage-bde -resume c:

Что-то вроде до автоматического включения осталась одна перезагрузка. Ребутаемся - опять говорит, что осталась одна перезагрузка.

1. Идем в c:\windows\system32\recovery
2. Переименовываем файл ReAgent.xml, во что-то вроде _ReAgent.xml
3. Идем в панель управления, настройки Bitlocker, Возобновить
4. Радуемся

Проблема - в файле остались GUID'ы старого раздела, когда он был еще в MBR. Новый ReAgent.xml будет создан автоматически.

вторник, 28 апреля 2020 г.

MBAM и Enhanced HTTP, лайфхак

Как известно, для использования MBAM в SCCM необходимо, что бы Management Point был настроен по HTTPS. 
Во время разворачивания лабы надо было быстро проверить MBAM на 2002, а PKI разворачивать не очень хотелось.

Enhanced HTTP - released feature начиная с версии 1810, позволяющая следующее:
  • You can secure sensitive client communication without the need for PKI server authentication certificates.
  • Clients can securely access content from distribution points without the need for a network access account, client PKI certificate, and Windows authentication.
Более подробно - в документации

В одном из сценариев указано, что можно использовать для связи клиента с Management Point.
Идем в свойства сайта, переходим на вкладку Communication Security и выставляем галку 
Use Configuration Manager-generated certificates for HTTP site systems:


При этом в свойствах Management Point у нас остается Client Connection HTTP:


Идем в IIS и смотрим Bindings Default Web Site, видимо, что на 443 порту установлен сертификат SMS Role SSL Certificate:


Нажимаем View, переходим на вкладку Details, Copy to file и сохраняем сертификат.

Вешаем политику MBAM с шифрованием системного диска на коллекцию, запускаем цикл Machine Policy и смотрим в лог BitlockerManagementHandler.log, где видим, что агент MBAM успешно установлен, но на шаге Checking for recovery service at https://lab-sccm.lab.local/SMS_MP_MBAM/CoreService.svc получаем ошибку:


Идем на клиента, берем сохраненный SMS Role SSL Certificate и импортируем его в Доверенные корневые центры сертификации

Запускаем на клиенте Панель управления - Configuration Manager - Конфигурации наш Bitlocker Compliance, смотрим в BitlockerManagementHandler.log еще раз:



Порталы так же устанавливаются и работают:



А вот с IBCM у меня не взлетает, ругается:"Unable to find suitable Recovery Service MP".
Будем посмотреть.

среда, 22 января 2020 г.

PKI, SHA-256 и вот это все

Пришло время написать что-нибудь, т.к. 4 месяца не видел в глаза SCCM, а потом 4 месяца внедрял SCCM и времени писать особо не было. Было много интересного, постараюсь время от времени делиться.

Очень я своевременно про Windows 7, но просто полезно для понимания.

Имели SCCM 1906, в новогодние праздники по традиции решили обновиться до 1910, т.к. сильно хочется MBAM. Обновились, заодно переехали на HTTPS, задеплоили нового агента на препрод, погоняли и поставили галку автообновления агента в течение 2х недель.

Проходит 2 недели и я вижу, что очень много клиентов не обновилось. Начинаю разбираться в чем дело и понимаю, что проблема на 99% Windows 7, на остальных системах проблемы нет. Стучусь с клиента на Win10 на DP по https и вижу, что сертификат подменяется Касперским. Ну, думаю, дело в шляпе, буду просить ИБ удалить Каспера. Стучусь с Win7 и вижу, что сертификат подменяется DLP. Радости нет предела. Выясняем, что на Win7 стоит версия Каспера, которая не умеет подменять сертификат, но все равно удаляем Каспера и DLP. Результата никакого.

Шаблон сертификата на всех машинах одинаковый, выпускающий CA один и тот же, на клиенте сертификат присутствует, в логах агента SCCM сертификат проходит все проверки, но во время скачивания контента видим в логе DataTransferService.log на клиенте следующие ошибки:

 Failed in WinHttpSendRequest API, ErrorCode = 0x2efe  
 Successfully queued event on HTTP/HTTPS failure for server 'sccm-dp01.domain.local'.     DataTransferService     21.01.2020 13:08:59     3788 (0x0ECC)  
 Error sending DAV request. HTTP code 0, status ''     DataTransferService     21.01.2020 13:08:59     3788 (0x0ECC)  
 GetDirectoryList_HTTP mapping original error 0x80072efe to 0x800704cf.     DataTransferService     21.01.2020 13:08:59     3788 (0x0ECC)  
 GetDirectoryList_HTTP('https://sccm-dp01.domain.local:443/SMS_DP_SMSPKG$/Content_89021bf8-df78-4d5e-9ae1-c02fce8317fb.1') failed with code 0x800704cf.     DataTransferService     21.01.2020 13:08:59     3788 (0x0ECC)  

Со стороны IIS на DP было видно:
403 7 5 1390 2, что говорит нам 403.7 Forbidden: Client Certificate Required 

Гугление по ошибкам ни к чему толковому не приводит, кроме как проверьте сеть, фаерволл, либо темы без решения.

При этом я вижу около 10 машин на Win7, на которых проблемы нет, агент успешно обновился, любой софт ставится.

Отмечу сразу, что 7ки с проблемами не обновлялись от слова совсем. Прикатил туда все патчи - без результата, т.к. подозрение пало на отсутствие поддержки SHA-256. Развернул чистую 7ку без софта от ИБ, пропатчил и тоже без результата.

Добрый PFE из MS говорит, что надо брать в руки Wireshark и смотреть, что происходит, но сразу я его конечно же не послушал и проводил бесконечные эксперименты. В итоге беру Wireshark и вижу, что в момент согласования я получают от DP - RESET. Начинаю смотреть внимательно и вижу, что в списке допустимых алгоритмов почему-то не наблюдаю SHA-256, перепроверяю наличие патчей - установлены:



Приглядевшись еще внимательнее я вижу, что согласование пытается пройти по SSL3 и TLS 1.0 , и тут коллективный разум в лице @skorotkov спрашивает, какая ОС у меня на DP, на что я сообщаю, что Win 2019. Он просит показать вывод IISCrypto - скачать можно по ссылке https://www.nartac.com/Products/IISCrypto/Download

Вывод, собственно, таков:


Думаю, теперь всем всё понятно. На Win 2019 по умолчанию включен только TLS 1.2, а на Win 7 у меня было две проблемы - отсутствовала поддержка SHA-256, т.к. не были установлены обновления и не был включен TLS 1.2

Про включение TLS 1.2 тут https://docs.microsoft.com/en-us/configmgr/core/plan-design/security/enable-tls-1-2-client

Выражаю огромную благодарность Community по SCCM, в частности @skorotkov и @quantum_yupiter

пятница, 15 марта 2019 г.

Обновление до Windows 10, ошибки на файлы lnk в папке Recent

Пока обновляли тестовую группу машин Window 7 до Windows 10, на паре машин столкнулся с проблемой: до первого ребута на машине валится таск, машина ребутится, делает откат, создается профиль username.000, даже если машину потом заапгрейдить еще раз, то часть приложений будет ссылаться на username000\*, часть на username\*, например, локальные pst в Outlook.

В логе %systemdrive%\$WINDOWS.~BT\Panther\setupact.log видим следующую ошибку:

Operation failed: First boot apply. Error: 0x8007042B[gle=0x000000b7]
Operation execution failed: 13. hr = 0x8007042B
ExecuteOperations: Failed execution phase Post First Boot. Error: 0x8007042B
Operation execution failed.
CSetupPlatformPrivate::Execute: Failed to deserialize/execute post-FirstBoot operations. Error: 0x8007042B
Persisting diagnostics data to C:\$WINDOWS.~BT\Sources\Diagnostics\diagnostics.dat
Diagnostics data saved successfully
SETUPPLATFORMCOMM: Progress message received: Phase: First Boot, Operation: Migrate data, Percentage: 58%
WINDEPLOY error code is 0x80004005. Will not attempt uninstall

В логе %systemdrive%\$WINDOWS.~BT\Panther\setuperr.log видим следующую ошибку:

Error 183 while applying object C:\Users\username\AppData\Roaming\Microsoft\Windows\Recent [022019.pdf.lnk]. Shell application requested abort[gle=0x00000002]


До конца не уверен, что проблема с дублированным профилем username000 связана именно с этим и создается он во время отката, а не после повторного запуска таска обновления, но на обеих машинах была аналогичная проблема с файлами в каталоге Recent. При этом у первого пользователя в новый профиль переехало все, кроме библиотеки Изображения, у второго пользователя профиль переехал 1 в 1.


Есть предположение, почему это происходит: ярлык-ссылка на файл есть, а самого файла уже нет. Этот ярлык не просто копируется, а пытается создаться заново с указанием на таргет, которого уже нет, но это неточно.

В каталоге Recent хранятся ссылки-ярлыки на недавно открытые документы. Это то самое, что можно увидеть в Пуск-Недавние документы или при правом клике на ярлык Word, закрепленного на панели задач - быстро открыть последние документы, открытые в приложении.

Через GPO можно запретить создавать эти ссылки, можно чистить их при выходе пользователя. Первое не подходит, потому что текущие ссылки оно не очистит, второе тоже - неизвестно, разлогинится ли юзер перед тем, как обновляться. Можно, конечно, пустить машину для начала в ребут.

В итоге написал небольшой скрипт. Коллега сказал, что некошерно, т.к. он пробежится по всем профилям, даже системным, но там этих файлов-ссылок быть не должно.


 cd $env:systemdrive\  
 $a=dir users  
 $a.fullname | %{remove-item ($_+"\appdata\roaming\microsoft\windows\recent\*") -Confirm:$false -Recurse}  

Скрипт пробегается рекурсивно по всем профилям в папке Users на системном диске, заглядывает в Recent и удаляет все оттуда.

После этого собираем пакет, указываем source folder с нашим скриптом, программы не создаем. Не забываем сделать Distribute Content на DP.
Далее создаем в TS для обновления ОС шаг - Run powershell script повыше Upgrade operating system и указываем пакет и имя нашего скрипта, Execution policy ставим в bypass:


После этого запускаем TS повторно, радуемся результату.

вторник, 5 марта 2019 г.

Вернуть Windows Photo Viewer в Windows 10.

После установки Windows 10, стандартным приложением для просмотра графических файлов является... в общем, не тот самый Windows Photo Viewer.
Если вы не используете какой-то нестандартный софт, то пользователи могут быть немного удивлены.

Начать нужно с того, что Windows Photo Viewer нужно "включить" в системе. Для этого нужно проделать небольшие правки в реестре. Сохраните код ниже, как .reg файл:


 Windows Registry Editor Version 5.00  
   
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations]  
 ".jpg"="PhotoViewer.FileAssoc.Jpeg"  
 ".wdp"="PhotoViewer.FileAssoc.Wdp"  
 ".jfif"="PhotoViewer.FileAssoc.JFIF"  
 ".dib"="PhotoViewer.FileAssoc.Bitmap"  
 ".png"="PhotoViewer.FileAssoc.Png"  
 ".jxr"="PhotoViewer.FileAssoc.Wdp"  
 ".bmp"="PhotoViewer.FileAssoc.Bitmap"  
 ".jpe"="PhotoViewer.FileAssoc.Jpeg"  
 ".jpeg"="PhotoViewer.FileAssoc.Jpeg"  
 ".gif"="PhotoViewer.FileAssoc.Gif"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap]  
 "ImageOptionFlags"=dword:00000001  
 "FriendlyTypeName"=hex(2):40,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,2c,00,2d,00,33,00,30,00,35,00,36,00,00,\  
  00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap\DefaultIcon]  
 @="%SystemRoot%\\System32\\imageres.dll,-70"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap\shell]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap\shell\open]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap\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\PhotoViewer.FileAssoc.Bitmap\shell\open\DropTarget]  
 "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF]  
 "EditFlags"=dword:00010000  
 "ImageOptionFlags"=dword:00000001  
 "FriendlyTypeName"=hex(2):40,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,2c,00,2d,00,33,00,30,00,35,00,35,00,00,\  
  00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\DefaultIcon]  
 @="%SystemRoot%\\System32\\imageres.dll,-72"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\shell]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\shell\open]  
 "MuiVerb"=hex(2):40,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,70,00,68,00,6f,00,74,00,6f,00,76,00,69,00,65,00,77,00,65,00,72,\  
  00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,34,00,33,00,00,00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\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\PhotoViewer.FileAssoc.JFIF\shell\open\DropTarget]  
 "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg]  
 "EditFlags"=dword:00010000  
 "ImageOptionFlags"=dword:00000001  
 "FriendlyTypeName"=hex(2):40,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,2c,00,2d,00,33,00,30,00,35,00,35,00,00,\  
  00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\DefaultIcon]  
 @="%SystemRoot%\\System32\\imageres.dll,-72"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\shell]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\shell\open]  
 "MuiVerb"=hex(2):40,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,70,00,68,00,6f,00,74,00,6f,00,76,00,69,00,65,00,77,00,65,00,72,\  
  00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,34,00,33,00,00,00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\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\PhotoViewer.FileAssoc.Jpeg\shell\open\DropTarget]  
 "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif]  
 "ImageOptionFlags"=dword:00000001  
 "FriendlyTypeName"=hex(2):40,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,2c,00,2d,00,33,00,30,00,35,00,37,00,00,\  
  00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif\DefaultIcon]  
 @="%SystemRoot%\\System32\\imageres.dll,-83"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif\shell]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif\shell\open]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif\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\PhotoViewer.FileAssoc.Gif\shell\open\DropTarget]  
 "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png]  
 "ImageOptionFlags"=dword:00000001  
 "FriendlyTypeName"=hex(2):40,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,2c,00,2d,00,33,00,30,00,35,00,37,00,00,\  
  00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png\DefaultIcon]  
 @="%SystemRoot%\\System32\\imageres.dll,-71"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png\shell]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png\shell\open]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png\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\PhotoViewer.FileAssoc.Png\shell\open\DropTarget]  
 "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp]  
 "EditFlags"=dword:00010000  
 "ImageOptionFlags"=dword:00000001  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\DefaultIcon]  
 @="%SystemRoot%\\System32\\wmphoto.dll,-400"  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\shell]  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\shell\open]  
 "MuiVerb"=hex(2):40,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,70,00,68,00,6f,00,74,00,6f,00,76,00,69,00,65,00,77,00,65,00,72,\  
  00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,34,00,33,00,00,00  
   
 [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\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\PhotoViewer.FileAssoc.Wdp\shell\open\DropTarget]  
 "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"  
   
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer]  
   
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities]  
 "ApplicationDescription"="@%ProgramFiles%\\Windows Photo Viewer\\photoviewer.dll,-3069"  
 "ApplicationName"="@%ProgramFiles%\\Windows Photo Viewer\\photoviewer.dll,-3009"  
   

После импорта .reg файла необходимо добавить ассоциации. В Windows 10 правка реестра для ассоциаций файлов является не очень корректным методом. Работать будет, но регулярно будет сыпать алерты, что ассоциации сброшены/настроены некорректно.

Для выгрузки стандартного полного xml файла ассоциаций можно взять чистую систему, включить на ней через реестр Windows Photo Viewer, возможно, подправить что-то еще и сделать выгрузку файла ассоциаций в xml
Dism.exe /Online /Export-DefaultAppAssociations:C:\defapp-custom.xml
На выходе получаем примерно такое содержимое:

 <?xml version="1.0" encoding="UTF-8"?>  
 <DefaultAssociations>  
  <Association Identifier=".3g2" ProgId="WMP11.AssocFile.3G2" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".3gp" ProgId="WMP11.AssocFile.3GP" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".3gp2" ProgId="WMP11.AssocFile.3G2" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".3gpp" ProgId="WMP11.AssocFile.3GP" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".aac" ProgId="WMP11.AssocFile.ADTS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".adt" ProgId="WMP11.AssocFile.ADTS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".adts" ProgId="WMP11.AssocFile.ADTS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".avi" ProgId="WMP11.AssocFile.AVI" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".bmp" ProgId="PhotoViewer.FileAssoc.Bitmap" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".dib" ProgId="PhotoViewer.FileAssoc.Bitmap" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".flac" ProgId="WMP11.AssocFile.FLAC" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".gif" ProgId="PhotoViewer.FileAssoc.Gif" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".htm" ProgId="IE.AssocFile.HTM" ApplicationName="Internet Explorer" />  
  <Association Identifier=".html" ProgId="IE.AssocFile.HTM" ApplicationName="Internet Explorer" />  
  <Association Identifier=".jfif" ProgId="PhotoViewer.FileAssoc.JFIF" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".jpe" ProgId="PhotoViewer.FileAssoc.Jpeg" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".jpeg" ProgId="PhotoViewer.FileAssoc.Jpeg" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".jpg" ProgId="PhotoViewer.FileAssoc.Jpeg" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".jxr" ProgId="PhotoViewer.FileAssoc.Wdp" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".m2t" ProgId="WMP11.AssocFile.M2TS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".m2ts" ProgId="WMP11.AssocFile.M2TS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".m3u" ProgId="WMP11.AssocFile.m3u" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".m4a" ProgId="WMP11.AssocFile.M4A" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".m4v" ProgId="WMP11.AssocFile.MP4" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mkv" ProgId="WMP11.AssocFile.MKV" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mod" ProgId="WMP11.AssocFile.MPEG" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mov" ProgId="WMP11.AssocFile.MOV" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".MP2" ProgId="WMP11.AssocFile.MP3" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mp3" ProgId="WMP11.AssocFile.MP3" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mp4" ProgId="WMP11.AssocFile.MP4" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mp4v" ProgId="WMP11.AssocFile.MP4" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mpa" ProgId="WMP11.AssocFile.MPEG" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".MPE" ProgId="WMP11.AssocFile.MPEG" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mpeg" ProgId="WMP11.AssocFile.MPEG" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mpg" ProgId="WMP11.AssocFile.MPEG" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mpv2" ProgId="WMP11.AssocFile.MPEG" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".mts" ProgId="WMP11.AssocFile.M2TS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".png" ProgId="PhotoViewer.FileAssoc.Png" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".tif" ProgId="TIFImage.Document" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".tiff" ProgId="TIFImage.Document" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".TS" ProgId="WMP11.AssocFile.TTS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".TTS" ProgId="WMP11.AssocFile.TTS" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".txt" ProgId="txtfile" ApplicationName="Блокнот" />  
  <Association Identifier=".url" ProgId="IE.AssocFile.URL" ApplicationName="Браузер" />  
  <Association Identifier=".wav" ProgId="WMP11.AssocFile.WAV" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".wdp" ProgId="PhotoViewer.FileAssoc.Wdp" ApplicationName="Просмотр фотографий Windows" />  
  <Association Identifier=".website" ProgId="IE.AssocFile.WEBSITE" ApplicationName="Internet Explorer" />  
  <Association Identifier=".wm" ProgId="WMP11.AssocFile.ASF" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".wma" ProgId="WMP11.AssocFile.WMA" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".wmv" ProgId="WMP11.AssocFile.WMV" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier=".WPL" ProgId="WMP11.AssocFile.WPL" ApplicationName="Проигрыватель Windows Media" />  
  <Association Identifier="http" ProgId="IE.HTTP" ApplicationName="Internet Explorer" />  
  <Association Identifier="https" ProgId="IE.HTTPS" ApplicationName="Internet Explorer" />  
 </DefaultAssociations>  

А далее берем SCCM, собираем пакет, кладем в него наш .reg файл, xml файл и, например, .bat (который мы и будем использовать как command line в program у пакета) файл такого содержимого:

 regedit.exe /s %~dp0photoviewer-assoc.reg  
 dism.exe /online /Import-DefaultAppAssociations:"%~dp0defapp-custom.xml"  

Имена файлов, естественно, ставим нужные. Про %~dp0, надеюсь, объяснять не нужно, но гугл, если что, знает.

Добавляем установку нашего пакета в Task Sequence после шага Setup Windows and Configuration Manager, радуемся полученному результату.


понедельник, 4 марта 2019 г.

Не отображаются In-Console updates, SCCM 1810

После обновления до SCCM 1810 (а мы обновлялись с 2012 R2 SP1), в разделе Administration-Updates and Servicing должны появляться Rollup апдейты, хотфиксы и т.д., но их не было видно.

Для обновления до SCCM 1810 нужно было установить SP4 на SQL 2012. 
Как-то я упустил момент, что у меня висел алерт о том, что на сайт-сервере нужно обновить SQL native client.

Увидеть его можно во вкладке Monitoring-Updates and Servicing Status:


При попытке синхронизации обновлений, в логе dmpdownloader.log была ругань на соединение с SQL. 
SQL Native Client был обновлен до версии из SP4, обновления появились в консоли. 

В - Внимательность.

Ну и небольшая цитата из документации:

"When you install a new site, Configuration Manager automatically installs SQL Server Native Client as a redistributable component. After the site is installed, Configuration Manager does not upgrade SQL Server Native Client. This check makes sure the site has a supported version of the SQL Native Client. Starting in version 1810, the minimum version is SQL 2012 SP4 (11.*.7001.0)."

пятница, 1 марта 2019 г.

Windows 10. SCCM Offline servicing, dism.

При подготовке к миграции на Windows 10, пришлось немало поразбираться с различными тонкостями. Бытует мнение, что очень хорошей практикой при установке Windows 10 является использование install.wim, входящим в родной iso Windows 10, что и было решено попробовать.

Использование штатного install.wim оправдано, если вам не нужно делать capture системы, в которой "зашито" какое-то ПО . Возможно, оно не умеет устанавливаться в silent режиме или есть какие-то тонкости с донастройкой после установки, которые нельзя прикатить централизованно.

Для минимизации времени установки Windows 7, мы использовали capture, т.к. в системе был установлен office 2013. Раз в месяц шаблон конвертировался в ВМ, устанавливались все обновления на ОС и Office, дальше ВМ опять конвертировалась в шаблон, делался клон, он захватывался. С появлением office 2019 все немного изменилось и данная процедура потеряла смысл.

Мы остановились на редакции Windows 10 2019 LTSC. Берем наш install.wim, добавляем в SCCM, с помощью Offline Servicing (у вас должен быть SUP) пытаемся накатить на него Service Stack Update (а его нужно накатить в первую очередь. В данный момент актуальной версией является kb4470788), он успешно применяется к образу. После этого пытаемся добавить последний Cumulative Update (в данный момент актуальным является февральский kb4487044), смотрим в OfflineServicingMgr.log и видим там ошибку:
InstallUpdate returned code 0x80073713
Failed to install update with ID 16827616 on the image. ErrorCode = 14099
При этом, если попробовать установить обновление для Adobe Flash - оно устанавливается нормально. Гуглил-гуглин, очень много сообщений о том, что именно CU не устанавливаются в режиме SCCM - Offline Servicing. Кто-то пишет, что какие-то CU ставятся, какие-то нет. Находил информацию, что проблема действительно имеет место быть, она известна разработчикам, но там что-то сильно поменяли в механизме и править в ближайшем будущем не будут (но это не точно).

Что ж, берем в руки dism и делаем все то же самое и даже больше.
1. Монтируем стандартный install.wim
dism /mount-image /imagefile:"c:\img\install.wim" /mountdir:c:\mounted /index:1
2. Устанавливаем Service Stack update
dism /add-package /image:"c:\mounted" /packagepath="C:\upd\windows10.0-kb4470788-x64_76f112f2b02b1716cdc0cab6c40f73764759cb0d.msu" /logpath=c:\upd\dism.log
3. Устанавливаем актуальный CU
dism /add-package /image:"c:\mounted" /packagepath="C:\upd\windows10.0-kb4487044-x64_6024f9853d489cf4eab66ce2145e91df45183de7.msu" /logpath=c:\upd\dism.log

4. Устанавливаем обновление для Adobe Flash
dism /add-package /image:"c:\mounted" /packagepath="C:\upd\windows10.0-kb4487038-x64_1f1aed068ed38987aa2c100e7e01292404be1703.msu" /logpath=c:\upd\dism.log
Обновления интегрированы, можно было бы размонтировать образ и получить пропатченный install.wim, но образ получается слишком толстым (примерно на 1Гб больше, чем базовый), поэтому мы сделаем небольшой Cleanup.
Если выполнить команду

dism /image:"c:\mounted" /get-packages /format:table

четверг, 6 июля 2017 г.

VMware 6.5, проблема с мышкой в Windows PE

Относительно недавно обновили виртуальную платформу VMware до версии 6.5 и появилась проблема: загружаешься по pxe, стартует Windows PE, а мышкой в ней пользоваться невозможно, т.к. чуть тронешь мышку - курсор начинает летать из угла в угол.

Решил посмотреть версию драйвера мышки, входящего в VMware tools старой версии, который был интегрирован в Windows PE - VMware pointing device 12.4.0.6 (от 17.11.2009 года)

Распаковал VMware tools от версии 6.5 и увидел, что от мышки два драйвера:
  1. VMware Pointing Device 12.5.7.0 от 18.12.2015 года
  2. VMware USB Pointing Device 12.5.7.0 от 18.12.2015 года
Добавил драйвер в SCCM, убрал старый драйвер из загрузочного образа Windows PE, добавил новый и чудо - мышка заработала нормально.