Как стать автором
Обновить

Комментарии 79

реверс инженер это не специальность, это методология.

Кажется, я уже видел очень похожую строку в реестре, в разделе Policies (там я ранее как раз искал какой-нибудь параметр, который и мог приводить к проблеме)

Может вы ее и создали?

Может вы ее и создали?

Конечно нет.

При выводе элементов в реестре они сортируются по алфавиту (как и все остальные на скриншоте), но созданные до первого перечитывания реестра находятся внизу (как на скриншоте). Выглядит странно.

Очевидно, что я писал статью не по ходу решения проблемы, а после её решения.

Значит, все-таки создали! :-)

Так и до изнасилования Реверс-инженером журналиста комментатора не далеко =)

Реверс-изнасилования

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

Я принял челлендж на "прогуглить проблему", и похоже, что данная проблема была как минимум год назад:

https://www.dell.com/support/kbdoc/ru-ru/000155876/how-do-i-resolve-the-error-message-your-system-administrator-disabled-the-display-control-panel-in-microsoft-windows

...и 11 лет назад:
https://onlinecomputertips.com/support-categories/pc-troubleshooting/208-system-administrator-disabled-the-display/

Альтернативный вариант фикса "Some settings are managed by your administrator" (и самый правильный) - это установить групповую политику Disable the Display Control Panel в "Not Configured" или "Disabled" (скрин с Win10):

Administrative Templates / Control Panel / Display

Пробраться сквозь дебри одинаково неподходящих ответов очень сложно, с целью найти подходящее решение. Ведь никаких подсказок о том, почему винда так пишет, и как это исправить нигде не даётся.

Да, порой кунг-фу гугления оказывается сложнее расчехления специализированной тулзы (или как минимум приятнее).

С Виндой проблема в том, что при гуглинге всплывает тонна SEO-буллшита, пытающегося пропихнуть очередную платную бесполезную утилиту, абсолютно бесполезного и засоряющего весь поиск...

Немножко помогает uBlacklist, у меня уже список из пары сотен таких сайтов.

а куда-нибудь на pastebin.com можно?

В смысле, никаких подсказок? Фраза "управляется вашим системным администратором" в настройках просто кричит о том, что где-то выставлена специальная политика управления данной настройкой и надо её найти и отключить, если компьютер домашний и администратор этого компьютера по трезвой памяти такие политики не настраивал.

Фраза "управляется вашим системным администратором"
если компьютер домашний и администратор этого компьютера по трезвой памяти такие политики не настраивал

… просто кричит о том, что где-то само собой творится что-то нездоровое.

Не бывает "оно само". Никогда. Всегда это происходит по какой-то причине.

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Но где что выставлено это не помогает понять.

Речь же о поиске в гугле (мой ответ не абстрактный, а на конкретный комментарий был). Не надо перечитывать весь гугол найденных вариантов. Достаточно лишь погуглить политики, которые могли так сделать.

НЛО прилетело и опубликовало эту надпись здесь
Ну так чтобы задать правильный вопрос нужно знать половину ответа.

По факту быстрее переустановить с нуля даже чем обновку насильно поставить (с нуля — это полчаса времени и потом файлики поперекидывать, обновка насильно — это часа 4-5 на скачку, установку и надписей «погодите, мы тут что-то делаем»)

На компьютере офисного клерка - может быть. А у меня дома пять экранов установленных приложений (может быть три, если убрать либы) и несколько вечеров на отладку валившегося обновления сэкономили кучу времени на перенос настроек с лицензиями.

Кстати, тут отличное руководство тоже от сотрудника MS, но уже настоящего, а не болванчиков с форума.

НЛО прилетело и опубликовало эту надпись здесь
всегда радовали умения других в дебагинге даже таких сложных штук, как винда
Да винда как раз крайне дружелюбна к разработчикам и реверсерам.
А вот если вы захотите подобным образом реверсить Linux, вот тут-то вы и познаете настоящий ад. Потому что у нас тут ни дружелюбных отладчиков (есть один только древний динозавр GDB, пользоваться которым по-настоящему мучительно), ни нормальной документации по библиотечным функциям, конфиги размазаны тонким слоем по всей системе, а взаимодействие компонент и подсистем крайне запутано.

Мне для большинства нужд хватает поиск в исходниках и strace. bpftrace в особо запущенных случаях. Зачем в Linux реверсить если можно просто пересобрать со своими изменения и посмотреть?

Вот совершенно нет. "Динозавр gdb" - это, простите, про наиболее мощный и развивающийся отладчик, который разрабатывают и по сей день? Который имеет поддержку для кучи платформ? У которого куча gui-нашлёпок, если кому-то с консолью не совладать? Что до ОС, то для каждого пакета линукса (ок, говорим про Ubuntu/Debian для конкретности) есть пакет с отладочными символами и исходным кодом. Так что подцепиться отладчиком можно не просто так же просто, как показано в статье, да ещё и с исходным кодом! Вряд ли для windows будет исходный код. Конфиги в бОльшей части концентрируются в /etc, а реестр windows, в таком случае, тоже давно превратился в помойку, куда пихают всё все компоненты. Разбираться и там и там придётся. Взаимодействие компонент в windows не запутано? Оу-оу. Оно и запутано, и написано индусами внутри компании и не документировано. А компоненты в Линукс, так как пишутся зачастую, разными людьми/группами, имеют очень даже неплохую документацию по каждому такому компоненту отдельно. Документации по библиотечным функциям, говорите? Ну, вообще смешно. Мы о публичном API? Для большинства стандартных библиотек libc, glibc, gtk, qt - огромная масса док, не хуже MSDN. А что до внутренних функций типа той, что описана в статье, ну-ка покажите на неё документацию, и отдельно на компонент, который автор отлаживал? В Линуксе я не просто дебажил систему, как свой домашний проект, так ещё и пересобирал пару модулей из стандартной поставки дистрибутива, чтобы бажку пофиксить. И теперь они - часть системы.

Я много времени работал разработчиком под Windows до ухода к пингвинам. Windows до 7-ки включительно была вполне юзабельна, нетребовательна к ресурсам, стабильна, и не решала за меня, что мне лучше, чей это компьютер, и когда тут обновляться. Куда пошла компания мелких после этого, один шайтан ведает. Не хочется вообще теперь иметь дело с их поделиями вообще никогда.

Подскажите, GDB сервер уже начал выдавать более осмысленные коды ошибок, чем просто "ошибка 01"?

конфиги в бОльшей части концентрируются в /etc

.config например — тот самый реестр но на текстовых файлах ;)
Как когда-то были ini файлы в Windows. Потом Microsoft призвала всех писать в реестр.
… а потом появился .NET и официальной рекоминадцией стало размещение параметров для программы имя.exe в файле имя.exe.config (на этапе разработки в проекте VS содержимое этого файла берется из app.config). Так что ничто не вечно под луной, увы.

.config это hkcu, только куда проще и понятнее.

НЛО прилетело и опубликовало эту надпись здесь

К слову о Линухе: пробовал недавно IDA + ее отладчик для линуха - вполне норм!

Для него есть огромная куча графических интерфейсов. Та же IDA.

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

Для несведущих, о каких полях данных речь при смене материнки?

НЛО прилетело и опубликовало эту надпись здесь
Каждый решает проблемы на основе того, чему он учился.

Я, вот, как системный администратор Windows, в том числе, сразу, чисто по сообщению, понял, что у вас управление дисплеем было заблокировано политикой. И я даже примерно представляю, где, в каком из административных шаблонов эту политику надо искать (но наизусть не помню). А так как компьютер у вас не в домене, то политика может быть только локальной. Так что я бы запустил редактор локальной групповой политики gpedit.msc, нашел бы нужное место и поправил. Если же ваша версия Windows не поддерживает политику (точнее, ее редактирование), то я бы взял файл шаблона политик (они все лежат в C:\Windows\PolicyDefinitions), нашел бы, где там определен нужный параметр, посмотрел бы ключ и значение реестра, которое он меняет, и поменял бы.

Тем не менее, поздравляю с успешным решением проблемы самостоятельно, а не через гугл(почти). Не поймите меня неправильно — это не упрек и не укор: если что, такими способами решения проблем известный и авторитетный спец по Windows Марк Руссинович не брезговал пользоваться.

PS В порядке общей информакции — вдруг кто не знает, а ему пригодится. Для поиска подозрительных ключей реестра (и файлов конфигурации) есть менее трудоемкий путь, чем использовать отладчик — утилита procmon (Process Monitor) от Sysinternals (сейчас это давно уже часть Microsoft, но утилиты эти поддерживатся до сих пор). С его помощью можно получить трассу обращений к реестру/файловой системе и что-нибудь, имея эту трассу, сделать.

PPS Записал к себле в копилочку интересный факт: оказывается, новый — стильный, модный, моложежный — интерфейс настроек Windows вполне поддерживает старые настрой политик для Control Panel. По крайнейе мере — может.

Окей, а вот как тогда людям помогает включение полной телеметрии при наличии такого же сообщения в других разделах (даже видео есть)? Где связь, и как бы вы решали это?

При включении телеметрии производится модификация некоторого набора параметров реестра, среди которых и нужное нам (случайно или намеренно) затесалось. Я бы так предположил.

Окей, а вот как тогда людям помогает включение полной телеметрии при наличии такого же сообщения в других разделах (даже видео есть)

Если честно — без понятия. Я эти рецепты ни разу подробно не смотрел, что там делать предлагают.
Где связь, и как бы вы решали это?

Как бы решал я, написано выше, и гугление, которое могло бы вывести меня на рекомендации включить полную телеметрию, в изначальный алгоритм решения просто бы не входило. Просто потому, что мне, как администратору, и без гугла было понятно, откуда начинать рыть, из уже имеющихся знаний.
А представить, что бы я делал без этих знаний, у меня фантазии не хватает.
Тем не менее, в винде есть куча параметров реестра, которые вообще нигде не описаны, и кроме как реверсингом их не обнаружить. Например, у драйвера sdbus.sys есть параметр NonremovableDevice, который сделает SD/MMC карту «несъемной», с возможностью разбивать на разделы и загрузиться с нее. А что делает параметр SdCmdFlags того же драйвера — попробуйте угадать (он используется в .inf).
Увы, документировано не все. Но хотя бы по некоторой (и весьма большой) части ОС и приложений документации есть. И это радует.
Спасибо, интересно! Но. Ваша статья приобрела бы ещё большую ценность, если бы вы продублировали ключевые слова/параметры текстом (NoDispCpl, REST_NODISPLAYCPL, и т.п.), ибо по тексту в скриншотах ни хабр, ни даже гугл искать не умеют…

Сделал, спасибо.

Напомнило мне, как я на заре своей ИТ-карьеры фар (Far Manager) ломал - надоели мне пара "закрытых" меню, я взял отладчик и через несколько часов хождения по коду радостно сообщил коллегам, что дело сделано, мир спасен! А мне посоветовали заглянуть в read.me, а там русским по белому (синему) написано, как легально да пару минут зарегить продукт.

Всегда задавался этим вопросом. Ответа так и не нашёл.

Потому что инженер - это ingénieur. Несколько более раннее заимствование, когда брали не из английского, а из французского.

Так, что engineering по-русски будет "инженерия".

А "инжиниринг" это просто неассимилированная калька с английского.

Я такие вещи дебагал на куда более высоком уровне, с помощью procmon.exe. Запускаем как админ, запускаем процесс, воспроизводим ошибку, останавливаем захват procmon, фильтруем по процессу или имени ехе, и пошли читать, куда оно лезет и за чем. Кроме того, вот эта фраза "some settings are managed by" означает почти во всех микрософтовых приложениях наличие управляющих политик, а они уже находятся в реестре в разделе HKLM|HKCU/Software/Policies для прикладного софта, и в найденном вами месте для системного.

Мне было проще порыться в отладчике. Как уже сказали выше: "кто на что учился".

Главный вопрос - кто ж туда этот параметр записал? :-D

Я склоняюсь к тому, что это сделал тот самый предлагаемый виндой опциональный апдейт, больше некому.

Ээээ. Что я только что прочитал?

Строчка эта означает, что на машину применена какая-то настройка групповой политики.

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

Ждём свежих открытий

Я не сделал никаких открытий.

какая-то настройка групповой политики

"Произошла кокаето ошибка". Ну, очевидно же, что дело в групповых политиках, только каких?

Связанных с дисплеем? Можно было сразу в реестре посмотреть, возможно можно было в файлике registry.pol посмотреть, возможно можно было запустить mmc посмотреть. Что тут реверсить?

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

«Some settings are managed by your system administrator». Но я и есть администратор!

ну и пошли сложным путем через отладчик, а если бы вы действительно были администратором, то знали бы что возникновение этой надписи означает что этими настройками управляет GPO и идти надо туда ;)

Так я и пошёл туда. А что искать-то дальше?

искать логическим путем, но названию пунктов, там к каждому параметру есть довольно подробное описание, да и само дерево политик хоть и запутанное но подчинено определенной логике и минут 15-20 ковыряний вы найдете где хранятся параметры дисплея
p.s. пример подсказать не могу. уже года два как на линух с концами переехал

В оснастке gpedit.msc есть фильтр по измененным из дефолтного состояния (настроенным) политикам. Поиск измененных значений займет очень мало времени.

В Home версии сложнее, по дефолту только в реестре искать.

НЛО прилетело и опубликовало эту надпись здесь

В Твиттере дискуссия про "PowerShell vs. C#" для небольших утилит завершилась схожим выводом - разработчику проще воспользоваться знакомым инструментом, чем заниматься ненормальным программированием со скриптами.

Чем-то напомнило статью на одном беговом форуме в которой один увлеченный бегун любитель рассказывал как на бегу померять пульс на руке не останавливаясь. Так вот он на полном серьезе в 2021ом году не знал о существовании спортивных часов с функцией пульсометра

Очень интересная статья, попалась в рекомендациях. И сразу возник такой вопрос. Нечто подобный метод я недавно думал применить к решению своей небольшой проблемы. Имеется Windows (не важно какая версия), в ней установлен плеер VLC, а также имеется устройство видеозахвата. Я хочу открыть в VLC данное устройство, чтобы смотреть изображение с видеоисточника. Делается это через dshow://. Если оставить параметры dshow:// по умолчанию, то устройство в плеере открывается некорректно. Если указать параметр :dshow-config, то запуск будет предварительно сопровождаться в отдельном окне диалоговым режимом по настройке устройства (источник видеовхода, разрешение, цветовая схема, аппаратные ускорители и т.д.). Это окно настроек берётся из драйвера на устройство. Откуда конкретно именно - я не нашёл. Как только там привожу в порядок некоторые параметры, то всё становится чётко, как мне надо. При повторном запуске настройки сбрасываются, не сохраняются. Данные настройки - вне VLC и вне dshow, они исключительно от устройства. Вопрос у меня такой. Каким образом заставить драйвер по умолчанию конфигурировать моё устройство видеозахвата правильными нужными мне настройками? Чтобы я каждый раз не прибегал к вызову диалога конфигурации параметром :dshow-config. Документации на драйверы и их организацию нету. В реестре ничего не нашёл (мож плохо искал). Наверно надо залезть в файлы драйверов и что-то там исправить.

Сходу сказать сложно, но одно точно - если система x64, то драйвера с непройденной проверкой подписи не загрузятся. Нужно будет включать Test Mode.

Кстати, вот этот апдейт:

Что забавно, обновление не ставил, а указанный в статье флаг сегодня снова кто-то установил.

Во-первых, это может делать вполне себе штатный клиент групповой политики: установки локальной политики на базе административных шаблонов хранятся не непосредственно в реестре, а в файле Registry.pol в каталоге Windows в подкаталоге system32\GroupPolicy (это — скрытый каталог): либо в подкаталоге Machine (политика компьютера), либо в подкаталоге User (политика пользователя), и клиент групповой политики их периодически применяет.

А если очень хочется узнать, какой процесс и когда изменил ключ реестра, можно включить аудит доступа к этому ключу. Для этого нужно, во-первых, разрешить аудит для подкатегории «Аудит реестра» (или всей категории «Доступ к объектам»). Делается это либо, опять-таки, с помощью редактора политики (там есть особенность — аудит для категорий и для подкатегорий включается в несколько разных местах интерфейса, подробности, если нужно, расскажу), либо командой auditpol. А, во-вторых, настроить список контроля доступа в непосредственно в свойствах ключа реестра: на вкладке Аудит в окне Дополнительных параметров безопасности (вызываемых по кнопке Дополнительно из окна разрешений). События аудита пишутся в журнал событий Безопасность.
Имеет также смысл включить аудит запуска процессов (подкатегория Аудит создания процессов в категории дополнительное отслеживание), чтобы иметь информацию, позволяющую идентифицировать процесс, изменивший ключ реестра.
PS События из журнала Безопасность для анализа (их там может оказться много) можно экспортировать, например, командой Powershell Get-WinEvent, или обычной командой wewtutil.exe
Обновления политики точно не трогают, так что это однозначно какой-то пользовательский софт. Ставлю на всякие говнотвикеры — их авторы обожают отстреливать пользователям ноги, причём, безо всякой практической пользы.

Включите что-то типа Process Monitor и настройте фильтр на конкретный ключ.

Я не пользуюсь твикерами ещё со времён Windows XP.

как насчет того, чтобы поискать-таки виновника и, по итогу, дописать UPD в статью?

Так и сделаю.

Под линуксом для решения страшненький проблем пользуюсь wireshark и strace (ltrace). Под виндой часто спасает processmonitor. Здесь, думаю, он тоже бы помог(особенно если знать что искать)).

У вас тоже круто получилось, отличный способ.

Procmon для Linux тоже есть.

В Windows Server 2022 в некоторых диалогах сделали ссылку с указанием конкретных политик, которые блокируют настройки:

Hidden text

Расшифровка не самая подробная, но хоть что-то:

Hidden text
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории