@Linda-chan

Тег windows в блоге Linda-chan

Linda-chan

“Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.”
Yes, that’s sad. Personally, I develop Win32 desktop applications in Delphi (specifically, the VCL framework, which is just a thin layer on top of the native Windows controls), so all applications I write professionally (for scientific, industrial, or enterprise use) as well as all applications I write at home (mathematical visualisation etc.) are 100% native Windows applications. Of course, with the scroll bar context menu.
In fact, a few years ago, an update to the VCL made this context menu disappear. Being an Embarcadero MVP, I reported it as a bug and now it is back again!
To me, the classic Win32 desktop and its native Win32 controls represent quality and stability. Everything just works, every time, in exactly the expected way. A Win32 app I wrote in the late 90s can still be used on Windows 11 today. Its Delphi project can be opened in the most recent Delphi version (13.2) just fine. And I feel confident that Win32 applications I write today will be usable in 20 years time without any issues at all.
I might sound like some kind of “Win32 fanatic”, but I truly believe that the classic Windows desktop is a major technological achievement in terms of quality and stability. Sometimes you get the feeling that “kids these days” don’t think that the classic Win32 desktop is very “hot” or “cool”, but the world runs on it: Everything from healthcare information systems to hotel reservation systems are based on the classic Win32 desktop.
And it just works. I love it!
And I think it is sad that it often isn’t considered “cool” or “hot” or “modern” these days.

https://devblogs.microsoft....44753#comment-144753
ППКС.

Linda-chan

Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.
[...]
Great, so by the time I learn about a shortcut for scroll bars (Shift+click), the ecosystem has fragmented so much that I can’t even rely on it working.

https://devblogs.microsoft....260922-00/?p=112719/
Кажется, до Рэймонда Чена начало доходить.

Linda-chan

Пиздец. Есть программа с именем файла «BeckyUpdateChecker.EXE». Есть манифест. При старте программы Windows 10 просит права администратора для внесения неких изменений в компьютер. Программа никаких изменений не вносит, просто читает страницу в интернете и предлагает скачать два файла. Но это ладно. Программа, как я уже сказала, оснащена манифестом, но тема не применяется, грузится старая библиотека контролов. Но, если переименовать екзешник вместе с манифестом во что-то другое, то сразу же начинает грузиться новая библиотека. Более того, иногда после закрытия программы появляется сообщение, интересующееся, установилась ли программа правильно. По какой-то причине оно считает, что программа – это какой-то сетап, а не просто программа. Ну, тоесть понятно, что это из-за «Update» в имени файла и любви Windows с каждой новой версией всё активнее играть в угадайку и пытаться применить какие-то улучшайзеры, когда о них никто не просит. Но, блин, с контролами-то что не так?

Linda-chan

Открываем старую справку по функции GlobalMemoryStatus() и находим описание параметра lpBuffer:

Points to a MEMORYSTATUS structure in which information about current memory availability is returned. Before calling this function, the calling process should set the dwLength member of this structure.

Угу. А теперь находим на сайте Microsoft справку по той же функции и читаем описание параметра lpBuffer:

A pointer to a MEMORYSTATUS structure. The GlobalMemoryStatus function stores information about current memory availability into this structure.

https://learn.microsoft.com...e-globalmemorystatus
Про размер ничего не написано. Давайте посмотрим, что там написано про параметр dwLength в описании самой структуры!

The size of the MEMORYSTATUS data structure, in bytes. You do not need to set this member before calling the GlobalMemoryStatus function; the function sets it.

https://learn.microsoft.com...winbase-memorystatus
Молодцы!
Тут уже был как-то персонаж, которому GlobalMemoryStatusEx() при каждом запуске выдавала разный общий размер физической памяти. При чём цифры там шли на терабайты. Оказалось, что чувак а) не инициализировал структуру, б) не устанавливал обязательное поле (в новой документации написано, что поле dwLength для Ex версии устанавливать надо) и в) не проверял результат. Вот ему Цэ и выдавал мусор в структуру, функция ничего со структурой не делала, поскольку в dwLength было неправильное значение, а FALSE персонаж не видел. Вот и думал, что функция работает неправильно.
https://stackoverflow.com/q...memorystatusex-win32

Linda-chan

Let's play a game - win32 types vs Polish language:
LPCWSTR
PSZCZYNA
WCSLEN
WCZESNY
LPCTSTR
BYDGOSZCZ
WSTRZAS
HGDIOBJ
DOWOD
HWINSTA
DLUGOSC
LPCSTR
DWORD
KAL
LPWSTR
SZCZECIN
PCWSTR
BLAD
PUHALF
CHUJ
UHALF

https://x.com/valigo/status/2045147015819182449

Linda-chan

Установила, значит, на комп Windows 10. Какую-то раннюю версию, где даже свойства системы (там, где версия и ключ активации) ещё не перенесли в говнометро. Отправила устанавливать обновления. Прошли вечер и ночь... Рандомный BSOD при загрузке системы. Бесконечная загрузка системы. Завершение работы системы три минуты. Меню Пуск появляется, а вот менюшки выключения-перезагрузки – нет. Обновление до 22H2 даже не установилось, свалившись с ошибкой. И это всё, напоминаю, в течение суток с установки системы. Я понимаю, что у Microsoft факапы регулярно, но такого лютого пиздеца я даже во времена Windows 98 не помню.

Linda-chan

Там, говорят, сломали CPU-Z и какой-то HWMonitor, и распространяют обновлённую версию с сюрпризом. Не знаю, есть ли в этих программах автообновление, но уже жду кривляний экспертов, которые расскажут нам, что винда настолько дырявая, что даже информацию о железе в ней смотреть смертельно опасно.

Linda-chan

Как Microsoft додумалась и у Windows 10, и у Windows 11 сделать версию 10.0, сделав отличие только по диапазону в номере билда? Что, блять, они там курили?

Linda-chan

У PE бинарников есть такая штука, как поле «Subsystem», которое показывает, в какой из подсистем и какой версии может запускаться данный бинарник. Например, это GUI программа, консольная программа, к которой система автоматом будет прикручивать консольное окошко, или даже нативная, которая работает только при запуске винды, как, например, часть CHKDSK, проверяющая системный диск. Тоесть нативный бинарник просто не запустится в обычном режиме – система скажет, что бинарник неправильный. То же касается и версии. 4.0 работает даже в Windows 98, а вот 6.0 в Windows XP не запустится. Я это всё к чему? Оказалось, что, не смотря на то, что у DLL всё это тоже есть, система, при загрузке библиотеки, не учитывает ни то, ни другое. А я думала, что версия всё же влияет.

Linda-chan

Не помню, когда это началось, но сейчас приобретает масштабы стихийного бедствия. Раньше заходишь в службы и видишь там «Print Manager», «Connect Monitor» и прочее. Сейчас в Windows 10/11 заходишь туда, и видишь бесконечные «connect_manager_ololo», «PrintSupportForAbc», а чаще всего – «J9rspmTrdks_123d». И вот рука уже тянется к антивирусу, чтобы зачистить заразу, но нет, система была установлена пять минут назад, и даже к сети не подключалась. Короче, я к тому, что свежие винды словно бюджетники на отъебись пишут: куда ни ткни – везде всепоглощающее коекакерство, что даже сервисы обозвать по-человечески не могут.

Linda-chan

В последнее время у меня в ленте Твиттера постоянно мелькают посты от экспертов разной степени знаменитости, в которых оные берут какое-нибудь не очень известное, но вполне логичное поведение Windows и описывают его таким образом, что у читателя складывается ощущение, что это какая-то страшная уязвимость, слив данных или закладка от ЦРУ. Ну и в камментах тут же собирается соответствующая аудитория, которая прямо там интересуется у Грока, отсутствует ли такое поведение у линупса, ну и сразу же в режиме онлайн, не покидая дискуссии переходит на этот самый линупс. Например, на днях твиттерские с удивлением узнали, как работает PnP, узнали, что, при подключении любого устройства к компу с Windows, в реестре создаётся запись со всеми данными об этом устройстве, дабы в будущем знать, как с ним работать. Дальше выяснилось, что флэшки, внешние диски и всё такое прочее тоже являются устройствами, и тоже вписываются в реестр со всеми необходимыми данными, в том числе датой подключения. И эти данные можно посмотреть буквально системными средствами (редактором реестра). И всё, и пипец. В твиттерском поезде начался сущий кошмар: Microsoft сливает, какиры наблюдают, еврейское мировое правительство оставляет подсказки, все срочно на линупс (в идеале – Арч). Или вот вчера народ узнал про альтернативные файловые потоки NTFS, в которых прячутся страшные вирусы, которые, в свою очередь, никакими диспетчерами задач и антивирусами не обнаружить. И таких откровений там по паре штук в день. Не, бывает полезная информация от профессионально деформированных осинтеров (?), но, опять же, подача и реакция...

Linda-chan

Оказалось, в Win16 была функция ExitWindowsExec(), которая завершала систему, запускала указанную DOS программу и снова стартовала Windows.

Linda-chan

Всегда был интересен смысл раздела «CurrentVersion» в реестре. Ну, в смысле, а какая ещё версия, если не текущая, в которой загружен реестр? «PreviousVersion»? «FutureVersion»? «UnknownVersion»?

Linda-chan

Windows 11. Тыкаю в искалку на панели задач, ввожу «shutdown -r -t 1», жму Enter. Появляется окно консоли, тут же закрывается, и тишина. Повторяю – снова тишина. Запускаю там же просто cmd, ввожу то же самое, система уходит на перезагрузку. Охуеть, даже это сломали.

Linda-chan

Неожиданно меню «Пуск» починилось. Обратила внимание на то, что винда говорит, что нет интернета. Удивилась, пошла проверять настройки прокси, но по ошибке ткнула не в нормальные свойства броузера, а в зумерские круглые настройки. Оказалось, что круглые настройки не понимают настроек прокси, если там для разных протоколов указаны разные прокси, и просто вываливает строку «http=1.2.3.4:5678;https=9.8.7.6:5432» в поле «IP-адрес прокси-сервера» (в Microsoft не знают, что тут можно указать не только IP-адрес), а поле «Порт» оставляют пустым. Поправила, проверила, что там в нормальных настройках. Оказалось, что там всё так, как когда указываешь для всех протоколов один прокси. Короче, не уверена, что это как-то отразилось на общей ситуации, но пока я изучала говнокодинг нового поколения говнокодеров, винда осознала, что интернет таки есть, показала соответствующий значок в трее, и меню «Пуск» начало открываться. Мне лень экспериментировать, но похоже, что это не совпадение, и меню «Пуск» требует постоянного подключения к интернету.

Linda-chan

Машина с Windows 11. Стоит на складе уже пару лет и просто работает. Иногда я захожу на неё, чтобы что-то сделать, типа, запустить программу и посмотреть, как она выглядит в новой системе. Больше её никто не трогает, практически всегда она стоит без залогиненных пользователей. И вот сегодня это случилось и с этой машиной: у неё сломалось меню «Пуск». Тыкаю кнопочку, кнопочка подсвечивается, но меню не появляется на экране. При чём фокус с активного окна уходит, на Esc оно реагирует, но меню нет. Даже если оставить кнопку нажатой на несколько минут. Даже если нажать много раз. Перезагрузки не помогают. Я уже сбилась со счёта, на скольких машинах с Windows 10 и Windows 11 (особенно на Десятке) таким же образом ломались меню «Пуск», искалка на панели задач или и то, и другое. Мало того, что оно выглядит теперь уродливо, так ещё и ломается постоянно.

Linda-chan

В Windows есть галочка, которая блокирует компьютер при запуске скринсейвера. Давно заметила, да всё забывала написать, чтобы все знали, начиная с Нанами (или, может быть, Висты) работает это так. Запускается скринсейвер, проходит пара секунд периода, в который система не блокируется (где-то это можно было настроить), потом пользователь дёргает мышкой или жмёт на клавиатуру, скринсейвер схлопывается, вместо него появляется рабочий стол со всеми окнами, и тут же происходит блокировка системы с соответствующим звуковым уведомлением. Ну а дальше надо жать Ctrl+Alt+Del (или не надо) и вводить пароль от учётки, чтобы снова увидеть рабочий стол. Так вот, в более ранних версиях винды, такой фигни не было, и после схлопывания скринсейвера пользователь сразу видел экран приветствия™ или окошко, предлагающее разблокировать систему. Не знаю, в чём причина таких отличий – в тормозах или каких-то конструктивных особенностях – но такое присутствует.

Linda-chan

«В свежих форточках лезут формочки из Windows 3.1» – это такой тупой тезис, что каждый раз, когда его слышишь, даже не знаешь, смеяться или плакать.

Linda-chan

На днях наблюдала, как в одиннадцатой винде встроенный Defender сагрился на файл с EICAR вирусом и потребовал перезагрузить устройство™. Зачем? А кто его знает...

Linda-chan

Помню, в начале нулевых был прикол, когда кто-то заметил, что в файле ярлыка по какой-то причине данные дублируются. Возможно, одна копия была в ANSI, вторая – в юникоде, но мне лень вспоминать и разбираться. И вот, одна копия показывалась в свойствах ярлыка, а вторая использовалась при запуске этого самого ярлыка. Таким образом, достаточно было подправить вторую на что-то другое, и пользователь получал ярлык, который запускал страшный вирус, но в свойствах было что-то безобидное.

⬆

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.