Тотальная неудачница и убийца жёстких дисков.
#post-id: 5879-14-42
#original-date: 30.08.2016 Tue
#original-time: 2:42 PM
#original-day:  5879
#original-host: WinXP Prof SP3 (Build 2600)

Ни дня без сюрпризов!

Внимание! Имя параметра «IRPStackSize» вводится с учетом регистра.

https://support.microsoft.com/ru-ru/kb/177078

Напомню, что в реестре имена ключей и параметров регистронезависимые. Тоесть, если ты вызываешь RegQueryValueEx(), то системе по барабану в каком регистре будет набрано имя.

Но как они добились такого успеха? Моя теория: вместо того чтобы последовательно запрашивать все известные параметры и получать их значения (либо сообщения о несуществовании таких параметров), они перечисляют всё содержимое ключа и сверяют, совпадает ли очередное имя с именем какого-либо параметра. Да, и совершенно случайно, ещё в NT4 они забыли сверять это без учёта регистра, да так и не поправили.

Лучшие интерпрайзные практики.

#upd: Хикедайя поковырялся в MSDN и выяснил, что регистронезависимость имён параметров нигде не оговорена, только имён ключей. Хотя эксперименты показывают, что регистр значения не имеет.

Но для MSDN это в принципе не новость. win32.hlp вообще сообщал:

Each key has a name consisting of one or more printable ANSI characters ѕ that is, characters ranging from values 32 through 127. Key names cannot include a space, a backslash (\), or a wildcard character (* or ?). Key names beginning with a period (.) are reserved. The name of each subkey is unique with respect to the key that is immediately above it in the hierarchy. Key names are not localized into other languages, although values may be.

Это уже во времена Unicode и NT4.