#post-id: 7248-17-21
#original-date: 30.05.2020 Sat
#original-time: 5:21 PM
#original-day: 7248
#original-host: WinXP Home SP3 (Build 2600)

Почти случайно узнала, что переменные окружения в Windows оказывают большее влияние на программы, чем казалось до этого. Скажем, раньше я считала, что всякие AppData, USERPROFILE, TEMP и прочие приходят откуда-то из внутренностей системы и отражают то, что там творится. И если их значение поменять, то на системные функции вроде SHGetSpecialFolderLocation() и GetTempPath() это не отразится.

Однако, это не так: эти функции возвращают значение исходя из значения переменных. Так что модифицировать их значения нужно осторожно: можно, например, поменять путь к каталогу Windows и сделать невозможным запуск дочерних процессов.

Кстати, прикол. В Windows есть две переменные, содержащие путь к временному каталогу: TEMP и TMP. При модификации первой GetTempPath() будет возвращать старое значение. Зато значение второй пойдёт в результат функции. Наверняка за этим стоит какая-нибудь история про совместимость.

#upd(30.05.2020 - 6:26 PM):

Хикедайя спешит на помощь:

https://devblogs.microsoft.com/oldnewthing/20150417-00/?p=44213

#upd(30.05.2020 - 6:34 PM):

Rewind to 1973.

[...]

(My recollection is that most CP/M programs were configured via patching. At least that’s how I configured them. I remember my WordStar manual coming with details about which bytes to patch to do what. There was also a few dozen bytes of patch space set aside for you to write your own subroutines, in case you needed to add custom support for your printer. I did this to add an “Is printer ready to accept another character?” function, which allowed for smoother background printing.)


Суровые сипиэмщики линуксоедов на завтрак кушают!

/* Фига себе он старый. */

#music: a - PSY - [싸집] 양아치