Авторский канал. Windows, безопасность, мобильный мир: • тайное знание • профессиональный ликбез • гадание по логам • срыв покровов • доставка пруфов Чат: @winsiders Блог: outsidethebox.ms Oбратная связь: @vsterkin Поддержать ₽: boosty.to/sterkin
🔃 Об увеличении и уменьшении размера обновлений Windows 11
Недавно в чат вбросили страшную цифру - размер майского накопительного обновления KB5058411 для Windows 11 24H2 составил 4.3 GB. Это только если скачивать из каталога Microsoft Update (MU), нежели через центр обновления Windows.
Июньское обновление KB5063060 похудело до 3 GB, но всё равно значительно тяжелее апрельского KB5055523, чей размер составлял 1.3 GB.
Я поковырялся немного и предлагаю вам свой разбор ситуации. Но сначала немного теории.
🔢 Состав накопительного обновления
У современных обновлений ОС [до сих пор было] три составляющих.
1️⃣ Чекпойнт служит фундаментом для ежемесячных обновлений начиная с 24H2. Если ОС прошла хоть один цикл обновления, это исправление уже установлено. Но когда вы скачиваете из каталога MU, чекпойнт прилагается в качестве отдельного MSU-файла. В июне 2025 года - это обновление KB5043080, выпущенное в сентябре 2024 года (MSU: 509 MB).
2️⃣ Сервисный стек (SSU) необходим для установки обновлений и обслуживания ОС. Обычно, пакет поставляется в комплекте с ежемесячным обновлением системных файлов. Но может выходить и отдельно, вне очереди (например, KB5061977). Удалению не подлежит.
3️⃣ Накопительное обновление системных файлов (LCU).
Пункты 2 и 3 образуют новейшее накопительное обновление. В каталоге MU они представлены в едином MSU-файле.
📃 Списки обновляемых файлов
В конце статьи базы знаний с описанием обновления есть ссылки на файлы CSV со списками файлов и их несжатыми размерами, раздельно для LCU и SSU. В сервисном стеке около 160 файлов, ими можно пренебречь. В LCU картина такая:
KB5055523 (2025-04): 19992 файла объёмом 6.19 GB
KB5058411 (2025-05): 21273 файла объёмом 6.51 GB
Из этих данных увеличение MSU на 3 GB не вытекает 🤷♂️ В скобках замечу, что обновляется около 20% системных файлов. Количество файлов в папке Windows показывает утилита diskusage.
🤐 Реальное содержимое обновлений
Пришлось скачать MSU и открыть их архиватором. Сразу многое прояснилось! На картинке слева показано апрельское обновление, справа - майское.
В мае добавилось множество пакетов MSIX. Их назначение можно угадать по манифесту внутри. Два первых попавшихся регистрируют такие расширения:Microsoft.Windows.Internal.SemanticSearch.TokenizerSession
Microsoft.Windows.Internal.Vision.TextRecognizerSession
Явно что-то связанное с искусственным интеллектом. Действительно, в описании превью майского обновления есть нововведения, связанные с ИИ. Версии компонентов совпадают с MSIX.
////
Осталось выяснить, почему июньское обновление вдруг стало легче майского на 1.3 GB. Посмотрите ещё раз на картинку, обращая внимание на размер пакетов MSIX. В майском обновлении хорошо просматриваются пары файлов с разницей не более чем несколько сотен байт. Внутри различия сводятся к аббревиатурам STX и LNL. Возможно, разные модели ML.
В июньском таких тяжелых "дубликатов" поменьше. Дальше я не копал. Но такой вброс в MSU множества MSIX и волатильность их списка не выглядят хорошо спланированным изменением. Опять же, все эти добавленные файлы не отражены в документации к обновлению 🙄
////
Разумеется, при установке обновлений из Windows Update скачивается куда меньший объём данных. Не нужно тащить чекпойнт, а компоненты для ПК Copilot+ предлагаются лишь на определённом "железе".
Но есть ещё автономные компьютеры в организациях и системы с порушенными службами WU дома. Для них придётся скачивать тяжёлые MSU со всеми инновационными пакетами ИИ ✌️
⛈ Наглядно: почему Windows Backup - это не бэкап
На прошлой неделе на Reddit всплыл прекрасный пост, который растиражировали все профильные новостные ресурсы.
ТС собрал данные со всех старых дисков и залил их в облако OneDrive, чтобы потом перенести на новый большой диск. Но дальше что-то пошло не так, и его аккаунт заблокировали. В результате он лишился всего нажитого непосильным трудом за 30 лет 🤷♂️ В посте невыносимые страдания и полный игнор со стороны Microsoft.
Начать хотелось бы с обвинений жертвы 😎 Он сам устроил себе ситуацию "данные без бэкапа и без гарантии доступа". А для блокировки аккаунта может быть достаточно одной пиратской программы или одной фотографии своего голого младенца.
Но главный злодей здесь, конечно, Microsoft 😈 Компания без зазрения совести не просто рекламирует, но агрессивно проталкивает потребителям свое облачное хранилище как единственное решение для резервного копирования файлов. История вопроса в блоге: раз, два, три.
Разумеется, при этом нигде не обозначается риск потери доступа к аккаунту. И он не иллюзорный.
🕓 Четыре года назад, комментируя перенос истории файлов на задворки устаревшей панели управления, я писал в этом канале:
Я задействую OneDrive на всех устройствах, но отрицаю его в качестве единственного бэкапа. При использовании клиента в Windows двусторонняя синхронизация может привести к потере данных при удалении с хоста. Да, это компенсируется историей версий и корзиной на 30 дней с предупреждениями. Но у нас нет полного контроля над файлами в облаке. Представьте блокировку аккаунта!
За компанию представьте блокировку свой учетной записи Google, Яндекс, Mailru, Telegram или любого другого облачного сервиса, где у вас лежит единственная копия данных. Сохраните важные файлы локально прямо сейчас!
Да, облачный бэкап лучше, чем полное отсутствие резервных копий. Но только файлы в облаке уже не ваши ✌️
🕒 Как предотвратить автоматическую перезагрузку после установки обновлений в Windows 11
Опубликованное в канале Расследование: кто перезагрузил Windows завершалось такими словами:
А в Windows 11 уже нет поддерживаемого способа предотвратить форсированный перезапуск после установки обновлений. Единственный обходной путь - ручное планирование перезагрузки, что позволяет отложить ее максимум на неделю.
С тех пор несколько человек доставили еще один обходной путь, который позволяет откладывать перезагрузку "бесконечно" долго. Беру в кавычки, потому что нам не дано протестировать бесконечность :)
👉 Суть способа: регулярное изменение периода активности с помощью запланированного задания. Windows не перезагружает систему в активные часы.
Это любопытный пример ситуации, когда поддерживаемыми способами система вводится в неподдерживаемое состояние. Поэтому в конце поста классическая и горячо любимая картинка 😎
Поскольку настройки периода активности задаются в реестре, скрипт несложный. Берем текущее время, добавляем к нему 18 часов (максимальный диапазон) и устанавливаем полученное значение для начала и конца периода активности. Примечательно, что параметры хранятся в разделе HKLM, но группе "Пользователи" запись туда разрешена.
▶️ Подписчик Алексей Батищев выложил на GitHub скрипт #PowerShell с установщиком и VBS (для скрытия консольных окон).
В установщик имеет смысл дописать запуск задания по факту добавления в планировщик. А в самом задании прописать -StartWhenAvailable (немедленный запуск после пропуска) и поменять частоту запусков с получаса до 12 часов.
////
Публикация не означает рекомендации или призыва к действию. Сам я предпочитаю не работать с известными уязвимостями. Поэтому доверяю перезагрузку автоматике, при необходимости задавая дату и время перезапуска вручную ✌️
☁️ Новое в блоге: Яндекс Диск 4.0 - нюансы установки и синхронизации
Время от времени я пишу про OneDrive - это мой единственный облачный клиент. Но Яндекс Диск у читателей канала более популярен 📊
Его новая версия 4.0 вышла 22 мая. Я бы не стал про неё писать, если бы не суть нововведений. Этот пост куда больше про Windows, чем про Яндекс :)
Опытному глазу уже из сравнения версий 3.0 и 4.0 видно, что теперь взаимодействие с облачными файлами Яндекса будет мало чем отличаться от OneDrive!
В чате пара человек, едва ознакомившись с новой версией, сходу отложили кирпичи 🧱 Мои рекомендации устранили боль либо уменьшили ее. Я собрал в статью эти советы по установке и использованию Диска:
📂 Настройте расположение папки с облачными файлами
🛡 Установите Диск в папку Program Files
🗃 Освойте файлы по запросу
👥 Настройте работу в нескольких аккаунтах Яндекса
Также в статье есть решения пары проблем.
➡️ https://www.outsidethebox.ms/22664
🔐 Новое в блоге: О беспарольной аутентификации с ключами доступа
В начале мая в одном из блогов Microsoft вышла программная статья Pushing passkeys forward. Из неё в новости попало лишь объявление о том, что учётные записи Microsoft (MSA) по умолчанию будут создаваться беспарольными. Это я уже разобрал в канале.
🔑 При этом статья Microsoft в целом была посвящена ключам доступа (passkeys). Это относительно новый способ беспарольной аутентификации. Его активно продвигают лидеры ИТ-индустрии – Microsoft и Google, что неудивительно при их огромной пользовательской базе.
Про беспарольный вход в аккаунты этих компаний я рассказывал неоднократно: раз, два, три. Но там не было речи о ключах доступа. Теперь дошла очередь и до них.
📊 Между тем, опрос в канале показал, что лишь 30% читателей пользуются ключами. Столько же первый раз о них слышат! Еще 27% уверены, что им это не нужно (но не факт, что все они чётко понимают принцип работы и преимущества технологии :)
Ключи доступа привязаны к устройствам, на которых они создаются и хранятся. Каждое устройство (например, компьютер под управлением Windows) можно сравнить с сейфом. В нём лежат ключи к различным аккаунтам...
➡️ Читайте дальше в блоге: https://www.outsidethebox.ms/22646/#go
Представьте, что злоумышленники сами дают вам «дружеские» рекомендации. Читайте, проверяйте себя и запоминайте, как делать НЕ НАДО!
🤡 Смело переходить по неизвестным ссылкам
«Вы выиграли миллион!» — ну это же точно правда (НЕТ).
Это классический фишинг. Любая подозрительная ссылка может вести на поддельный сайт с целью похитить ваши данные.
🤡 Использовать самый простой пароль 123456
Зачем усложнять: быстро вводится, легко запоминается (НЕТ).
Слабый пароль взламывается за секунды. Безопасный пароль — это длинная и уникальная комбинация букв, цифр и символов.
🤡 Верить всему, что видите в Интернете
Если друг пишет, что ему срочно нужны деньги — значит нужно быстро ему помочь. Голосовые сообщения – стопроцентное доказательство, что это точно он (НЕТ).
Дипфейки и взломанные аккаунты – стандартный инструмент злоумышленников.
А теперь серьезно: все вышеперечисленное – прямой путь к взлому и потере данных. Будьте на шаг впереди злоумышленников, подписывайтесь на канал Индид – компании, создающей решения в области Identity Security, и прокачивайте свою цифровую безопасность.
📌Присоединяйтесь и читайте полезные материалы, которые помогут защитить ваши данные.
#реклама
О рекламодателе
🔐 О входе в учётную запись Microsoft без пароля
В конце прошлой недели все профильные ресурсы раструбили новость: отныне новые учётные записи Microsoft (MSA) будут по умолчанию беспарольными. Реакция сообщества была неблагосклонной. Как будто это что-то плохое 😎
Беспарольность воспринимается как небезопасный отказ от надёжных паролей. К этому примешивается недоверие (ненависть?) к учётной записи Microsoft. Слабое знание матчасти порождает дичь в некоторых новостях и комментариях к ним 🙄
На самом деле беспарольная MSA существует очень давно. И для потребителей - это самый простой, удобный и безопасный способ входа в аккаунт Microsoft!
🌐 При двухфакторной аутентификации в вебе или приложении вы:
1. Получаете на смартфоне уведомление.
2. Нажимаете двузначное число, которое видите на экране.
3. Подтверждаете вход ПИН-кодом или биометрией.
И это всё! В картинках тут. За последние три года я ни разу не применял одноразовый код для #2FA в MSA. Беспарольный процесс удобнее.
🔢 Входить с MSA в Windows с Hello, т.е. посредством ПИН-кода или биометрии, можно уже лет шесть. А сделать такой способ входа единственным - почти пять лет. До сих пор многие воспринимают ПИН-код как нечто менее безопасное в сравнении с паролем. Однако ПИН-код может быть таким же сложным как пароль, при этом он защищается TPM и не передаётся по сети. Вот я пишу в канале про это почти 8 лет назад :)
Я также разбирал нюансы беспарольного входа в Windows в блоге. И в связи с новостью у меня лишь два вопроса.
🔹 Можно ли будет создать беспарольную учётную запись из-под Windows? Сейчас это возможно только на мобильных ОС. Причина в статье блога↑
🔹Можно ли будет войти в локальную среду восстановления с ПИН-кодом? При загрузке с флешки пароль не требуется, но это неприемлемый способ для массового потребителя. Сейчас есть только обходной путь - 48-значный пароль восстановления BitLocker. Впрочем, теперь Microsoft его полностью легитимизировала, включив автоматическое шифрование по умолчанию. Такой вот ход конём 🐴
Думаю, что в этих двух аспектах ничего не изменится. В итоге тиражируемая новость практически "ни о чём". Слегка поменяется логика создания учётной записи Microsoft, да и только.
В оригинале же основная часть обращения Microsoft к клиентам была про ключи доступа. Что не новость, но посвежее беспарольного входа и тоже удобно на практике. И я напишу про них в ближайшее время. Тем более, что черновик записи уже был готов в качестве ответа на вопрос читателя. Не переключайте каналы ✌️
🛍 Как открыть магазинное приложение, если у него нет ярлыка
И в Пуске оно тоже не находится. Этот вопрос задал мне подписчик Андрей К в контексте приложения Сообщения оператора (Operator Messages). Оно показывает служебные SMS мобильного оператора на устройствах с поддержкой 4G/5G.
Как я понял, приложение само открывается для отображения входящих SMS. Но если его закрыть, то потом уже не открыть. Андрей упомянул, что приложение можно закрепить на панели задач. И для меня это уже выглядит решением ✔️
Возможно, он не хотел занимать место на панели задач, предпочитая отдельный ярлык на рабочем столе. В этом случае следует закрыть закрепленное приложение - щелкнуть значок правой кнопкой мыши, удерживая Shift
и выбрать пункт "Создать ярлык" или "Отправить -> Рабочий стол" ✔️
Но допустим, что таких пунктов в меню не оказалось. Либо автор вопроса хочет запускать приложение из командной строки. Короче, этюдная задача с элементами матчасти :)
🤔 Рассуждая логически, раз приложение открывается на входящие сообщения, оно должно быть зарегистрировано для какого-то протокола. Найдем протокол - решим задачу.
1. Поищите protocol
в Параметрах и откройте страницу с приложениями по умолчанию.
2. В самом низу откройте раздел для сопоставления приложений типам ссылок.
3. Найдите приложение глазами, ориентируясь на значок. (На странице есть фильтр, но только по протоколам, а его-то мы и не знаем :)
✅ В данном случае находится URL:ms-chat
. И этого достаточно для решения задачи! У вас это приложение вряд ли установлено, поэтому для наглядности я заменил протокол ms-chat:
на ms-calculator:
. Вот разные способы открытия:
• окно Win+R
: ms-calculator:
• произвольный ярлык: explorer ms-calculator:
• командная строка: start calculator:
Да, протокол calculator:
там тоже есть :)
////
ℹ️ Протоколы регистрируются в реестре. Полный список протоколов Microsoft легко отобразить с помощью #PowerShellNew-PSDrive -Name "HKCR" -PSProvider Registry -Root "HKEY_CLASSES_ROOT"
Get-Item HKCR:\ms-* | select name
Не все они будут открывать какое-то приложение. Но в большинстве случаев это сработает.
Читателям со стажем эта тема покажется знакомой. Я как-то рассказывал в канале про быстрый доступ к страницам Параметров. И там всё строится именно на протоколе ms-settings
! ✌️
«А хватит ли моего английского, чтобы работать за границей?»
Этот вопрос не даёт покоя многим специалистам.
🟠 Кто-то не понимает, какой у него сейчас уровень.
🟠 Кто-то вроде занимался с репетитором, но не может пройти собеседование.
🟠 А кто-то просто боится звучать «непрофессионально» — из-за акцента, нехватки словарного запаса и неестественных пауз.
Если ты откладываешь работу за рубежом “до лучших времён”, пока не подтянешь английский — есть один вебинар для тебя.
📆 24 апреля в 19:00 мск.
Ведёт Настя Алексюк — преподаватель AgileFluent, 8 лет опыта в деловом и техническом английском, параллельно работает менеджером продукта в американском стартапе.
Настя поможет тебе:
— разобраться, достаточно ли у тебя английского, чтобы искать работу за границей;
— понять, какие именно навыки тормозят тебя (и что с этим делать);
— получить подборку нескучных упражнений без учебников.
Вебинар бесплатный и с пользой: ты выйдешь с чётким пониманием, что прокачивать и как.
🎁 А еще всем участникам — бонус: полезные материалы + скидка на занятия в AgileFluent!
👉 Регистрируйся по ссылке: https://agilefluent.ru/web-240425
Реклама. ООО «Эджайл», ИНН 7810964334, erid: 2VtzqwsBqWA
⚙️ Нюансы применения ZDP во время установки Windows
В терминологии Microsoft термин ZDP - это Zero Day Patch или Zero Day Package или Zero Day Priority [update] в зависимости от источника.
Осенью 2024 года я анализировал причину долгой установки Windows. Очень внимательный читатель Олег поймал меня на несоответствии. Его внимание привлекла эта фраза:
Первым делом обновляется сам OOBE - пакетом OOBE ZDP.
⌛️ Подписчик перешел по ссылке в блог Рэймонда Чена. И процитировал мне, что ZDP служит вовсе не для исправления багов OOBE. Это некий пакет самых критичных исправлений ОС для установки на этапе OOBE. Он должен быть маленьким, чтобы побыстрее установиться.
📄 Однако Чен писал в 2016 году, и с тех пор много воды утекло! Текущая реальность в журналах установки. Я пообещал Олегу разбор в канале. И сегодняшний пост публикуется в рубриках "гадание по логам" и "доставка пруфов"!
Нас интересуют файлы из папки C:\Windows\Panther
(ссылки на pastebin):
• setupact.log (фрагмент) с основными событиями установки ОС
• UnattendGC\
setupact.log с событиями ОOBE
🖼 Далее комментарии к строкам второго файла, из них на картинку вошли 442 - 462.
106 - загружается ZDP Plugin
442 - ожидаем результатов поиска от WU ZDP
443 - нашлось одно обновление (это KB5046683 для OOBE, строка 69 во фрагменте основного логе)
450 - установка успешная
451 - требуется перезагрузка
453 - пошли события после перезагрузки
На этом упоминания ZDP заканчиваются! Дальше идет установка последнего накопительного обновления (LCU).
462 - начат поиск срочных обновлений
495 - идет загрузка KB5044284
ℹ️ При установке с файлом ответов этого не происходит.
////
На основе этих логов я и сделал выводы:
1️⃣ Посредством OOBE ZDP сейчас обновляется только сам процесс OOBE, и это действительно маленький пакет.
2️⃣ Критические обновления ОС и сервисный стек устанавливаются в рамках стандартного LCU.
Разумеется, последней инстанцией здесь являются разработчики. Но получить их комментарии невозможно. Однако логи установки Windows весьма подробные, а их анализ - хорошее упражнение ✌️
☁️ OneDrive: как исключить определенные типы и имена файлов из синхронизации
Допустим, вы синхронизируете в облако папки "Рабочий стол" с двух разных компьютеров. Их содержимое смешивается. Это неудобно, когда у вас там ярлыки на разные программы либо на папки, которые не входят в сферу синхронизации. С таким подтекстом Aliaksandr
задал в чате вынесенный в заголовок вопрос, хотя звучал он совсем иначе.
🐞 В принципе, в параметрах клиента OneDrive есть настройка для исключения расширений. Но с ней есть две проблемы:
1. Расширения должны состоять не менее чем из трех символов. Например, md
не исключить.
2. Настройка не работает :) По крайней мере так, как люди ожидают. Множество жалоб в интернете подтвердили, что это не просто моя локальная проблема. Некоторые также правят INI-файл политик клиента, но безуспешно.
///
👉 Мы пойдем другим путем © У OneDrive есть групповые политики, и в изданиях Pro и выше можно решить вопрос политикой Exclude specific kinds of files from being uploaded (Исключить отправку определенных видов файлов).
⚠️ Учтите, что:
1. Политика применится только к новым файлам, то есть не будут исключаться уже существующие файлы, втч переименованные после включения политики. Поэтому придется навести порядок руками - например, пересоздать ярлыки.
2. Политика работает только с именами файлов и не действует на имена папок. Но папки можно исключить в настройках клиента.
3. Чтобы эта и другие политики OneDrive отобразились в графическом интерфейсе gpedit.msc
, нужно закинуть административные шаблоны из папки с клиентом OneDrive в %systemroot%\PolicyDefinitions
. Но прямая правка реестра работает и без этого.
⚙️ Изменения в реестр можно внести из консоли от имени администратора или REG-файлом. В этих примерах не будут синхронизироваться ярлыки и файлы с именем вроде mytest.txt
.reg add "HKLM\SOFTWARE\Policies\Microsoft\OneDrive\EnableODIgnoreListFromGPO" /v "*.lnk" /t REG_SZ /d "*.lnk" /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\OneDrive\EnableODIgnoreListFromGPO" /v "*test*" /t REG_SZ /d "*test*" /f
После внесения изменений в реестр перезапустите клиент OneDrive и ваш файловый менеджер.
Теперь можете закинуть в папку OneDrive несколько попадающих под действие политики файлов и убедиться, что они получили особый статус и значок. В тултипе поясняется, что файл исключен из синхронизации ✌️
▶️ Простой и эффективный поиск текста в PowerShell - Select-String
По работе нередко возникают задачи, связанные с поиском текста в разрозненных источниках. Например, есть сервис, который работает потихоньку и пишет логи с ежедневной ротацией. В какой-то момент обнаруживается сбой и связанная ошибка в логе. Нужно узнать, когда это происходило за некий срок. А после исправления проблемы убедиться, что она не воспроизводится.
Как правило, люди открывают Notepad++, загружают туда пачку логов и выполняют поиск во всех открытых файлах. На предложение использовать скрипт пожимают плечами - мол, это же разовая задача. И так сойдет 👌
У этого подхода много проблем:
1. Медленно.
2. Не выгружается сводка и найденные данные.
3. При большом количестве / размере файлов это работает плохо или вообще никак.
Да и не разовая это у них задача, поэтому скрипт подходит отлично.
👉 В #PowerShell для этой цели есть командлет Select-String
. Он умеет искать простое совпадение или регулярное выражение.
Select-String -Path 'C:\logs\*.log*' -Pattern '0x800f0805' -SimpleMatch
Select-String -Path 'C:\logs\*.log*' -Pattern '0x800f0805|0x80070490'
Get-Content
. А для такой задачи это неэффективно - слишком медленно!cbs.log
общим объемом около 1.2GB.$logpath = "C:\temp\logs\*cbs*.log"
Measure-Command {
$a = Select-String -Path $logpath -Pattern '0x800f0805' -SimpleMatch
}
$a.count
Measure-Command {
$b = Get-Content -Path $logpath | where $_ -match '0x800f0805'
}
$b.count
Select-String
справился за 7.5 секунд, а Get-Content
понадобилось 4 мин и 40 секунд.Select-String
есть очень полезный параметр -Context
, который выводит строки до и после найденного совпадения.Select-String -Path $logpath -Pattern 'exception ' -SimpleMatch -Context 2,20
Get-Content
имеет смысл. Но просто для поиска текста Select-String
вполне достаточно. И да, можно сказать чат-боту, чтобы применял конкретный командлет!⚙️ Как удалить ассоциацию программы с типом файлов
В чате Zubastic
задал этот вопрос в контексте файлов без расширения - некая программа предательски захватила ассоциацию с ними.
Вариантов регистрации много. Самый простой и работающий с незапамятных времен - программа прописывает себя в разделе HKCR\ProgramName
, в том числе команду на запуск в разделе HKCR\ProgramName\shell\open\command
. А для каждого расширения вносит указатель на этот раздел в HKCR\.ext
, где ext
- расширение.
ℹ️ В случае с файлами без расширения - раздел будет HKCR\.
. По умолчанию он отсутствует. Более того, Windows не позволяет вам создать его путем "Открыть с помощью": для файлов без расширений нет опции всегда открывать этой программой! Однако вот пример связи таких файлов с блокнотом по описанной выше схеме старыми добрыми командами assoc
и ftype
.
assoc .=NoExtFile
ftype NoExtFile="notepad.exe" "%1"
HKCR\.
, тем самым уничтожив указатель на программу. А назвать свой подраздел в HKCR она могла как угодно. С помощью Process Monitor мы определили конкретное название раздела - HKCR\PhotonWorkShop
. После его удаления проблема решилась ☑️HKCR\.
файлы без расширения продолжали открываться в этой программе 🤷♂️HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\
OpenWithList
- список программ в "Открыть с помощью"OpenWithProgids
- список зарегистрированных программ или отсылка к типу файлов в HKCRUserChoice
- текущая программа по умолчанию, выбранная пользователем (при наличии - преобладает над подразделами выше)OpenWithProgids
и OpenWithList
в HKCU. В этом случае при открытии файла будут отображаться системные ассоциации ↓HKCR\.ext
. Там тоже могут быть подразделы OpenWithProgids
и OpenWithList
. Универсального рецепта здесь нет ввиду различных способов регистрации.🔍 Расследование: кто перезагрузил Windows
В чате участник A S.
сообщил, что в Windows 11 политика NoAutoRebootWithLoggedOnUsers
не предотвращает перезагрузку после установки обновлений. Статью про это я написал в 2018 году и с тех пор не перепроверял. Причем 4 года спустя эту политику наряду с другими объявили устаревшей и не поддерживаемой в Windows 11. И пообещали в будущем выпилить.
У ТС все подробности свелись к "отхожу на несколько часов". Обычно, так быстро сразу после установки обновлений перезагрузка не происходит. Стандартно - в 3 часа ночи, но дальше может в любой момент вне активных часов 🕒
Проще проверить всё самому, и я зарядил виртуалку. За несколько часов ничего не произошло, как и с утра. Однако ночью я сплю, и моя основная ОС тоже, т.е. ВМ в ней неактивны. Поэтому наутро я изменил часовой пояс ВМ и продолжил тест.
👉 Перезагрузка произошла! Но чтобы обвинить в ней обновление Windows, надо ответить на второй по важности вопрос всех времен и народов: какие ваши доказательства?
Они собраны в журнале событий, поэтому пост публикуется в рубрике "Гадание по логам" с помощью #PowerShell.
1️⃣ Смотрим время загрузки ОС - сразу после 3 часов ночи. Уже горячо!
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Sunday, February 2, 2025 3:01:46 AM
1074
в журнале Система:Get-WinEvent -FilterHashtable @{LogName='System'; Id=1074} |
Select-Object TimeCreated, Message | Format-List
TimeCreated : 2/2/2025 3:00:03 AM
Message :
The process C:\WINDOWS\uus\AMD64\MoUsoCoreWorker.exe (DESKTOP-GQKOJ6B)
has initiated the restart of computer DESKTOP-GQKOJ6B on behalf of
user NT AUTHORITY\SYSTEM for the following reason:
Operating System: Service pack (Planned)
Reason Code: 0x80020010
Shutdown Type: restart.
MoUsoCoreWorker
. Время совпадает!Get-ScheduledTask | where TaskName -match 'Uso' | Get-ScheduledTaskInfo
LastRunTime : 2/2/2025 3:00:05 AM
LastTaskResult : 2147942402
NextRunTime : 2/3/2025 10:48:35 PM
NumberOfMissedRuns : 0
TaskName : USO_UxBroker
TaskPath : \Microsoft\Windows\UpdateOrchestrator\
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624,4634,4647} |
where message -match '1001' | Select-Object Id, TimeCreated, Message -First 15 |
ft -AutoSize
Id TimeCreated Message
-- ----------- -------
4634 2/2/2025 3:20:10 AM An account was logged off....
4624 2/2/2025 3:03:05 AM An account was successfully logged on....
4647 2/2/2025 3:00:05 AM User initiated logoff:...
4624 2/1/2025 11:33:32 PM An account was successfully logged on....
NoAutoRebootWithLoggedOnUsers
продолжает выполнять свою функцию. А в Windows 11 уже нет поддерживаемого способа предотвратить форсированный перезапуск после установки обновлений. Единственный обходной путь - ручное планирование перезагрузки, что позволяет отложить ее максимум на неделю ✌️
Читать полностью…
Бесплатно мигрируй в облако Serverspace 🔄
Мы поможем вам бесплатно мигрировать от другого провайдера и предложим скидку -30% на первый месяц!
VPS, GPU, S3, Удаленный рабочий стол и многое другое - уже в панели управления Serverspace!
▪️ Удобный калькулятор для расчёта стоимости
▪️ 9 дата-центров по миру
▪️ Безлимитный трафик
▪️ Поддержка 24/7
Сделаем переход в Serverspace комфортным:
1️⃣ Рассчитаем затраты и подберем оптимальную конфигурацию под ваш проект
2️⃣ Поможем перенести вашу инфраструктуру в облако бесплатно
3️⃣ Подарим -30% на месяц с промокодом VPS30
Миграция ещё никогда не была такой простой и выгодной!
📲 Начать переход
Erid
😎 PowerShell vs. CMD: запуск приложений с разным окружением
У моей команды есть два бизнес-приложения, которыми люди пользуются каждый день. При этом различные версии приложений нужно регулярно запускать в разных средах тестирования, создавая необходимое окружение при старте.
⌛️ Исторически они пользовались для запуска набором батников (пакетных файлов с расширением .bat
), которые им написал добрый человек. Но почему-то лишь для одного приложения. Может, для второго не попросили, либо автор не осилил обновление на лету INI-файла с конфигурацией.
Я бы тоже не осилил, поэтому переписал все на #PowerShell :) Но батники для вызова скрипта оставил. Иначе у пользователя скрипт скорее не запустится, чем запустится 🤷♂️powershell.exe -NoProfile -ExecutionPolicy Bypass -File script.ps1
Недавно в команду пришёл новый мальчик, попользовался скриптами и вскорости представил нам свое решение проблемы. Приложение-лончер с графическим интерфейсом, написанное на Java! 🌺
Оно действительно доставило преимущества в юзабилити. Так, можно указать папку, где установлены различные версии приложений, и выбирать нужную из раскрывающегося списка.
Я заинтересовался технической реализацией смены окружения, и молодой человек с готовностью продемонстрировал содержимое папки resources
. А в ней лежат батники, которые он написал на основе моих скриптов PowerShell и вызывает из Java-приложения 😂
Выбор победителя в этой схватке #powershellvscmd я оставляю вам ✌️
🔒 Каждый год все больше данных утекает в сеть. По оценкам экспертов, чаще всего сливают персональную информацию (76%), реквизиты платежных карт (12%) и учетки (11%). Поэтому бизнесу нужны крепкие спецы по информационной безопасности.
Станьте тем, за кем охотятся компании, после онлайн-магистратуры «Информационная безопасность» от Skillfactory и МИФИ. Это та же магистратура, что и в старом добром вузе, только онлайн.
🧑🎓 Программа рассчитана на два года, после выдают диплом государственного образца НИЯУ МИФИ — одного из лучших университетов России. В рамках обучения вы:
🔹Получите фундаментальные знания с фокусом на практику от преподавателей вуза и экспертов из VK и «Сбера».
🔹Отточите навыки в лабораториях и исследовательских центрах МИФИ.
🔹Поучаствуете в CTF-соревнованиях, хакатонах и стажировках.
🔹Сможете пользоваться всеми бонусами очных студентов (отсрочка от армии, студенческий билет, обучение 198 р/месяц при господдержке).
Чтобы поступить, нужен диплом о высшем образовании или студенческий билет последних курсов вуза. Вступительные — мотивационное письмо и экзамен с общими и профильными вопросами.
Набор в магистратуру уже идет. Количество мест ограничено.
👉 Оставляйте заявку по ссылке
Реклама. ООО «Скилфэктори». ИНН 9702009530, erid: 2Vtzqw9awbT
▶️ О фильтрах по имени в командлетах Get-
Тут Павел Нагаев "решил упороться в шортсы" с ошибками новичков в #PowerShell (начало серии здесь). Там не совсем ошибки, а скорее неэффективные конструкции, которые можно найти у всех новичков. Потому что они так нагуглили или теперь ChatGPT им так написал.
В первом же эпизоде об эффективном использовании фильтров разбирается ошибка, которая фигурировала в статье моего блога про удаление магазинных приложений. Вот так из хранилища удалялись все приложения, кроме перечисленных:Get-AppxProvisionedPackage -Online | Where-Object {$_.DisplayName -CNotLike '*Store*' -and $_.DisplayName -CNotLike '*Calc*' -and $_.DisplayName -CNotLike '*Notepad*'} | Remove-AppxProvisionedPackage -Online
Вообще, команда в таком виде попала в статью, будучи предложенной в комментариях читателем. Я скопировал и вставил, но ответственности с себя не снимаю :)
📢 Именно Павел подсказал мне, что код можно существенно сократить, задействовав вместо нескольких логических операторов -and
один оператор -notmatch
и регулярное выражение:Get-AppxProvisionedPackage -Online | Where-Object {$_.DisplayName -notmatch 'store|calc|notepad'} | Remove-AppxProvisionedPackage -Online
Намного проще! Также замечу, что у Where-Object
уже лет дцать поддерживается такой синтаксис: Where-Object DisplayName -notmatch 'store|calc|notepad'
Ещё проще!
////
В своем видео Павел использовал для примера выборку служб командлетом Get-Service
по первой букве названия службы. Get-Service | Where-Object {$_.Name -match "^w|^t|^f"}
И тут настала моя очередь доставлять ему про неэффективность 😎 Если уж браться рассказывать про эффективные фильтры, надо начинать со встроенных фильтров командлетов Get-
!Get-Service -Name f*,t*,w*
Это - тоже выборка по первым буквам названий служб. Фокус в том, что по имени можно фильтровать без передачи по конвейеру на Where-Object
.
🤝 Павел превратил мой фидбэк в короткое видео! https://www.youtube.com/shorts/9BUdqYLagnk
Отмечу, что параметр необязательно должен называться -Name
. Недавно я показывал в канале анализ запланированных заданий. Вот пример с -TaskName
:Get-ScheduledTask -TaskName devi*,sync*
////
В PowerShell очень много командлетов Get-
:Get-Command -Name Get* -CommandType Cmdlet
Не все они располагают к фильтру по имени, но тут главное - знать приём ✌️
🛡️ Автоматическое определение установщиков в UAC
С момента появления в Windows Vista контроль учетных записей эволюционировал с каждой новой версией ОС. Сегодня в фокусе малоизвестное, но любопытное нововведение времен Windows 10.
ℹ️ Исполняемые файлы должны содержать манифест, где указаны требования к правам пользователя на запуск. Если там прописано requireAdministrator
, вы не запустите программу без полных прав.
Манифест с highestAvailable
породит запрос UAC у администраторов, но не у ограниченных пользователей. Однако такую программу можно запустить с обычными правами методом RunAsInvoker. #Классика блога в помощь: Зачем программам нужны установщики.
👉 Именно с установщиками и связано изменение UAC в Windows 10. Запрос появляется, когда манифест не содержит требования к правам, а имя исполняемого файла содержит: setup
, install
, update
, patch
!
Это работает только с 32-разрядными файлами, причем имя файла - не единственный триггер. Все критерии эвристики описаны в документации. Ссылка ведет на веб-архив 2017 года, потому что из текущей версии статьи это уже выпилено 🙄 В Windows 11 работает, разумеется.
📝 Заметка на полях: в обоих документах заявляют возможность смены часового пояса без прав администратора. Что в 2025 году нам выдают за новую фичу :)
Возвращаясь к UAC, это изменение идеально подходило бы для Windows 7. Для Vista жести и так хватало, а в 2015 году 64-разрядные программы уже пошли в массы. Впрочем, 32-разрядных и сейчас еще в немало. Легаси полно в корпоративной среде, ради которой это все и затевалось.
На видео фича в действии. Я взял первую попавшуюся 32-разрядную утилиту NirSoft, в которой манифест не диктует права на запуск ✌
▶️ Тонкая настройка защитника Windows с помошью PowerShell
В чате участник Demon
спросил, почему защитник Windows удаляет файлы из папки, добавленной в исключения. Я запросил вывод PowerShell:
Get-MpThreat
Get-MpPreference | ft ExclusionPath
E:\Games
, но удаленный файл лежал в одной из ее подпапок. Защитник определил его как HackTool:Win32/Crack
.*
и ?
. Но есть нюанс © У вас не получится добавить в исключения все дочерние папки рекурсивно так: Add-MpPreference -ExclusionPath E:\Games\*
E:\Games\*\*
и т.д. Поддерживается максимум 6 подстановочных символов. Подробнее смотрите в документации с примерами.Piter Pen
посетовал, что защитник непоследовательно реагирует на различные угрозы. Одни отправляет в карантин, другие удаляет 🤷♂️Get-MpPreference | Select-Object *action
HighThreatDefaultAction : 0
LowThreatDefaultAction : 0
ModerateThreatDefaultAction : 0
SevereThreatDefaultAction : 0
UnknownThreatDefaultAction : 0
Set-MpPreference
. Set-MpPreference -SevereThreatDefaultAction Quarantine
☁️ О папке C:\Windows\System32\%userprofile%
От создателей папки C:\inetpub :) Но это - другая история!
Когда я впервые обнаружил у себя эту папку, был немало удивлен. Внутри оказалась только пустая папка OneDrive
. Идея понятна: %userprofile%\OneDrive
- это стандартное расположение облачной папки. Но как она оказалась в системной? Подумал, что накосячили либо в Microsoft, либо я сам со скриптами. Однако я давно не использую батники, а в PowerShell переменная для пользовательского профиля другая: $env:userprofile
.
💬 К исследованию вопроса я вернулся значительно позже, когда Alexandr Petnitsky в чате дал наводку. Якобы, папка появляется после перехода на установку OneDrive в Program Files. На паре моих систем все сходилось. Но я решил проверить на виртуалке. Поэтому сегодняшний пост публикуется в рубрике "доставка пруфов".
Для установки в Program Files достаточно одной команды. Однако после этого папка не появилась. И перезагрузка системы ничего не изменила 🤷♂️ Что ж, придется отлавливать всерьез. В блоге я рассказывал (причем на примере OneDrive!), как отследить запись запись в реестр с помощью аудита. Его можно также применять к объектам файловой системы (событие 4663). Но есть нюанс ©
⚙️ Поскольку папки нет, аудит приходится настраивать на уровне родительской папки. Соответственно, регистрируются все события доступа к дочерним объектам папки system32
. И один только антивирус может легко заполонить журнал. Поэтому для длительного отслеживания может потребоваться увеличить размер журнала (по умолчанию ~20Mb). Также учитывайте, что аудит объектов файловой системы может негативно повлиять на производительность.
За несколько дней папка так и не появилась. И тогда я вспомнил про Дело об окнах командной строки при входе в систему. Там OneDrive для самообслуживания время от времени батники запускал. Я решил подождать и выключил ВМ на несколько дней.
✅ В итоге и папка создалась, и принадлежащий OneDrive процесс FileSyncConfig.exe
попался в сети аудита. Причем на картинке видно, что доступ туда он осуществляет через день после создания папки. То есть это не разовая акция.
Для доступа в папку нужны права администратора, системы или TrustedInstaller, а размещенные в ней файлы не синхронизируются. И на том спасибо ✌️
⚙️ Как избавиться от предупреждения в проводнике при копировании файлов на диск, отформатированный в ext4
Этот вопрос задал в чате Юрий. Он переносил файлы на внешний диск с файловой системой ext4 и получал на каждый исполняемый файл такой запрос:
Вы действительно хотите переместить файл без его свойств?
Я сходу предложил использовать консольные средства. Например, в #PowerShell можно копировать файлы и папки командлетом Copy-Item
. И это сработало! ☑️
Однако Юрий не желал каждый раз лезть в консоль. Мол, он регулярно копирует файлы с локального диска на внешний. Что ж, для регулярных задач синхронизации файлов в Windows испокон веков есть прекрасная утилита командной строки robocopy! ☑️
Но и это Юрия не устроило. И сторонние файловые менеджеры тоже отметались :) Он оказался маководом и хотел амазинга просто копировать в проводнике. Он также сообщил, что нагуглил в качестве решения утилиту NTFS Stream Explorer. Но опять же, в ней требовались ручные действия перед копированием.
////
ℹ️ Здесь в самый раз подходила #классика блога Альтернативные потоки данных NTFS. Юрий нашел в ней твик реестра, но тот не помог. Тогда все-таки пришлось читать, вникать, и вскоре мы увидели примерно такую картину. Я сохранил смысл, но в качестве примера взял свой файл из папки Downloads и сократил вывод до сути.
Get-Item -Path .\*keep*exe -Stream * |
Select-Object pschildname,stream
PSChildName Stream
----------- ------
KeePass-2.57-Setup.exe::$DATA :$DATA
KeePass-2.57-Setup.exe:SmartScreen SmartScreen
Get-ChildItem -Path $env:USERPROFILE\downloads\ -File -Recurse | Remove-Item -Stream *SmartScreen*, *Zone.Identifier*
powershell
, а аргументами-NoProfile -Ex Bypass -Command "Get-ChildItem -Path $env:USERPROFILE\downloads\ -File -Recurse | Remove-Item -Stream *SmartScreen*, *Zone.Identifier*"
▶️ Как быстро искать по различным параметрам служб Windows
И не только служб. И не только в Windows!
В чате Николай посетовал :
Когда они сделают сквозной поиск по службам Windows. Ну то есть по всем атрибутам служб. Я вот не могу запомнить как какая служба называется в русскоязычном интерфейсе. Вывели хотя бы в оснастке столбец "Отображаемое имя", но нет.
В диспетчере задач Windows 11 есть приличный сквозной поиск по службам. Но отображаемого имени там нет. И многих прочих параметров тоже.
👉 Николаю сразу посоветовали #PowerShell - командлет Get-Service
для получения сведений о службах. Однако ТС хотел графический интерфейс и отрицал этот способ. Тогда я добавил еще один командлет - Out-GridView:
Get-Service | Out-GridView
Get-Service | select * | Out-GridView
select
. Get-ScheduledTask | select * | Out-GridView
$tasklist = @()
Get-ScheduledTask | ForEach-Object {
$task = [xml](Export-ScheduledTask -TaskName $_.URI)
$taskdetails = New-Object -Type Psobject -Property @{
"Name" = $_.URI
"Action" = $task.Task.Actions.Exec.Command
}
$tasklist += $taskdetails
}
$tasklist | select Name,Action | Out-GridView
Out-GridView
для анализа любых табличных наборов данных! ✌️
Читать полностью…
🔓 О папке C:\inetpub
Обычно она создаётся при включении необязательных компонентов IIS (встроенные в Windows веб-сервер и FTP-сервер). Однако после апрельского накопительного обновления внимательные люди обнаружили папку в клиентских и серверных Windows даже при выключенных компонентах IIS.
Спустя пару дней популярные сетевые издания сообщили со слов Microsoft, что так и задумано, а удалять папку не следует вне зависимости от наличия включённого IIS. И действительно, 10 апреля в статью с описанием уязвимости CVE-2025-21204: Windows Process Activation Elevation of Privilege Vulnerability безопасники Microsoft добавили специальное примечание:
After installing the updates listed in the Security Updates table for your operating system, a new %systemdrive%\inetpub folder will be created on your device. This folder should not be deleted regardless of whether Internet Information Services (IIS) is active on the target device. This behavior is part of changes that increase protection and does not require any action from IT admins and end users.
ℹ️ Дело тут серьёзное. В соответствии со статьёй, используя изъян в стеке Windows Update, злоумышленник с локальным доступом может легко повысить свои привилегии с обычных до системных. Это называется Elevation of Privilege, EoP.
Слабость классифицируется как CWE-59: Improper Link Resolution Before File Access ('Link Following'). И это похоже на очередную уязвимость в обработке ярлыков Windows, т.е. файлов .LNK. Среди наиболее заметных уязвимостей LNK с EoP из прошлого: CVE-2010-2568 и CVE-2017-8464. Но они были куда опаснее тем, что позволяли удалённое повышение привилегий.
🤔 Казалось бы, предотвращение уязвимости путём создания папки выглядит несерьёзно. Но с одной стороны, Microsoft заявляет это лишь как одну из мер. А с другой - это может быть достаточным временным (надеюсь 🙂) решением до реализации более существенного исправления.
⚙️ Вероятно, уязвимость эксплуатируется путём создания файлов .LNK в C:\inetpub. После установки обновления (и при включении IIS, если на то пошло) для записи в папку и её удаления требуются права системы, TrustedInstaller или администратора.
То есть теперь злоумышленник с ограниченными правами не может ни создать в ней файлы для эксплуатации уязвимости, ни заменить её на свою папку. См. картинку.
////
В общем, лучше папку не удалять. Если она мозолит глаза, сделайте её скрытой и системной. Если же вы удалили папку и теперь жалеете, есть пара вариантов:
🔹 Удалите апрельское накопительное обновление и установите его заново
🔹 Включите любой компонент IIS (это создаст папку) - клонируйте ACL во временную папку - выключите IIS и перезагрузитесь - создайте папку вручную - клонируйте ACL из временной папки. Разрешения будут не один к одному, но обычного пользователя ограничат.
Ещё можно попробовать дождаться следующего накопительного обновления. Однако я могу лишь предположить, что оно восстановит папку, но не гарантировать. Да и лучше не сидеть месяц с уязвимостью ✌️
💩 За кулисами создания г-сборки Windows (SE17E06)
Я регулярно поднимаю тему г-сборок в канале:
• затрагивал их экономику,
• разбирал "хорошие" г-сборки
• и относительно недавно заглядывал за кулисы
А тут не смог пройти мимо ещё одного повода, тем более не только у меня брови поднялись.
Есть известный в определённых кругах разработчик rgadguard
, чьи полезные ресурсы неоднократно фигурировали у меня в блоге (тут) и канале (раз, два, три). Такие проекты приносят пользу сообществу, а разработчику - уважение и хорошую репутацию.
А еще он делает г-сборки 😎 Не удивлюсь, если в неофициальном рейтинге г-сборщиков он входит в топ. Внезапно в своем канале он сорвал покровы с интимного процесса изготовления. И там было такое... Орфография и пунктуация автора сохранены.
Операционная система - Windows Server 2022 Datacenter
Почему установлена не последняя версия операционной системы, а всё по тому, при больших нагрузка, есть эффект подтормаживание проводника.
Также проведены операции, как полностью отключения Defender (с помощью Defender Remover) и отключение автоматического обновления (с помощью WUMT).
⚙ Об изменениях в создании локальной учётной записи при установке Windows
В конце прошлой недели всплыли две новости.
1️⃣ Файл bypassnro.cmd
выпилят из дистрибутива 25H2. Сам метод пока работать не перестанет, но вместо одной короткой команды для запуска файла придётся вводить две, которые в нём содержались. Это внесение изменений в реестр и перезагрузка.
2️⃣ Нашлась другая короткая команда, которая открывает диалог создания локальной учётной записи.
На первом экране OOBE нажмите Shift+F10
, ткните в окно командной строки и введите:start ms-cxh:localonly
Предположу, что это выпилят довольно быстро - может не дожить до 25H2. И напомню, что все это время неизменно рабочим способом остаётся файл ответов. Его можно применять:
🔹 с первого этапа установки
🔹 для автоматизации этапа OOBE
Учите матчасть ✌
😎 Сегодня у меня для вас рекомендации по автообрастаниям и автосхрюнку (или автохрюнку, это неточно :)
И не отрежьте там себе ничего автосхромкой! 🪚
Microsoft прогрессирует - переходит от ручного ухуренивания к автоухрюнку.
Это был #автоперевод в документации SQL Server ✌️
🆘 О самостоятельной техподдержке в организации
Однажды в пятницу вечером мне написала коллега. Она уже полностью отчаялась решить проблему - её виртуальный десктоп Windows 365 завис при входе.
🤖 Сначала она долго пробивалась через чат-бота поддержки. Он сыпал бесполезными советами и отказывался звать человека.
Кожаные мешки в итоге оказались не лучше. Первый создал базовый инцидент, но уже второй закрыл его - якобы, вместо инцидента надо было создавать запрос (на самом деле - нет). Сам его создал, но повесил на неправильную группу. Та с лёгким сердцем его и закрыла 🤦♂️ Вообще, попадание тикета в нужные руки - это одна из нерешённых пока глобальных проблем человечества :)
Всё это происходило небыстро, и девушка пыталась повлиять на процесс с помощью своего менеджера. Тот сказал обращаться в поддержку.
Так прошло две недели 😱
У меня было два простых совета.
1️⃣ Создавать инциденты самостоятельно с помощью формы на портале, нежели через чат с ботом и затем с первой линией поддержки. Экономия времени значительная! Заодно в тикет идёт изложенная своими словами проблема, а не в пересказе туговатового сотрудника техподдержки, нанятого за 2 песо. Об этом написано в руководстве для сотрудников проекта, но кто ж его читает.
2️⃣ Перезагрузить виртуальный десктоп. Неважно, установлена Windows на физическом железе или на виртуальной машине - живительный ребут никто не отменял! Кстати, недавно случайно узнал, что некоторые коллеги не понимали значение слова reboot - слишком технический термин 🤷♂️
Но тут был интересный нюанс: как перезагрузить Windows, когда она висит на входе, а кнопки питания нет нигде? 🤔 Более того, эти десктопы в принципе настроены так, что из графического интерфейса Windows убраны все опции перезагрузки и выключения. И даже консольные блокируются за исключением одного - в PowerShell от администратора Restart-Computer
. Но права админа просто так не дают.
👉 Однако облачные десктопы зачастую можно перезагрузить "снаружи". В данном случае нужно зайти на windows365.microsoft.com с аккаунтом организации. А там есть перезагрузка, откат к снимку системы и сброс. Это тоже было описано во внутреннем руководстве, кстати.
///
Вскорости после разговора коллега сообщила, что перезагрузка десктопа помогла, хотя и не сразу. Я не стал уточнять, что означала эта оговорка. Можно считать и сразу, когда за полчаса решаешь вопрос, с которым мучилась две недели ✅
Мораль вытекает из пунктов выше:
1. RTFM.
2. Перезагружайте Windows, прежде чем обратиться в техподдержку ✌️
🚀 Ускорение загрузки файлов в PowerShell
Недавно я перепроверял давно опубликованный в блоге скрипт для скачивания файла с помощью #PowerShell, и слишком уж долго шла загрузка. Хочу поделиться решениями.
1️⃣ Отключение прогресса
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest
(псевдоним iwr
) разница значительная! Один и тот же файл размером 175 мегабайт без прогресса у меня на разных системах скачивался от 16 до 42 секунд, а с прогрессом - от 3 до 13 минут! 🤔Invoke-WebRequest
качал слишком долго. Я предположил, что сайт специально притормаживает отдачу, и решил прикинуться браузером. -UserAgent "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
Invoke-WebRequest
и Invoke-RestMethod
также можно скачивать файлы с помощью Start-BitsTransfer
. Этот командлет запускает джоб с помощью службы BITS (фоновая интеллектуальная служба передачи данных). Именно ее использует центр обновления Windows.iwr
без юзер-агента. $file = "$env:temp\mpam-fe.exe"
$uri = 'https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64'
$u = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
$ProgressPreference = 'SilentlyContinue'
Measure-Command {
Invoke-WebRequest -Uri $uri -OutFile $file -UserAgent $u
}
Measure-Command {
Start-BitsTransfer -Source $uri -Destination $file
}
🌐 О приоритете записей в файле hosts
В чате обсуждали использование файла hosts с целью запретить приложению подключение к своим адресам. Речь зашла о возможных дубликатах записей. Один опытный участник заявил:
hosts читается сверху вниз и будет использован последний дубликат
Другой не менее опытный участник это полайкал. Судя по результатам викторины в виде опроса, так думает лишь четверть подписчиков. Правильно же ответили более 40%, что для моих викторин - отличный результат 😎
Я поинтересовался у автора заявления, как бы он его проверял. Тот предложил вписать в файл две строчки и пропинговать.
127.0.0.1 ya.ru
127.0.0.2 ya.ru
gc "C:\Windows\System32\drivers\etc\hosts" -Tail 2; ping ya.ru
127.0.0.1 ya.ru
127.0.0.2 ya.ru
Pinging ya.ru [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
dartraiden
). А в Linux всегда найдется какой-нибудь дистрибутив с альтернативной реализацией 🐧