Забавное. Есть функция ExpandEnvironmentStrings(), которая берёт строку и разворачивает в ней переменные окружения. Работает она типично: сначала запускаем, передавая NULL вместо приёмного буфера и 0 в качестве длины этого буфера, получаем нужный размер буфера и запускаем второй раз с подготовленным приёмным буфером. Некоторые функции, работающие по этому принципу, NULL не хотят, но там можно просто пустой буфер передать (хоть указатель на int с нуликом). Windows 95 возмутилась и тому, и тому варианту, GetLastError() указывает на ошибку в параметрах, хотя более поздние версии работают нормально. Выяснилось, что нулевой длины буфер функция не принимает, поэтому пришлось первый вызов делать с буфером длиной два символа, и тогда всё заработало, как надо.
Тег windows_95 в блоге Linda-chan
Некоторые мои программы колбасит в Windows 95 потому что там есть каталог «Application Data», но не совсем. Физически он есть, в реестре путь к нему прописан. Но функция SHGetSpecialFolderLocation() большинство этих каталогов не возвращает. А так как у меня именно она используется, то и случаются нежданичики. Надо фиксить...
Windows 95 ничего не знает о цифровой подписи екзешников и всего прочего. В Windows 98 оно уже было, хотя даже системные библиотеки без особого энтузиазма подписывались. Что в NT4 – не помню.
Маленькая драма во время установки.
https://pics.lindachan.net/2021/10/w95/index.xml
Не могу определится, ставить мне Desktop Update или пусть интерфейс и дальше будет лютым классическим?
IsDebuggerPresent
Windows NT – Yes
Win95 – No
А в Windows 98 точно добавили. Забавно, что в той справке (которая как раз во времена Windows 95 была выпущена, win32.hlp) import library не указана, а указано в самом тексте:
This function is exported from KERNEL32.DLL.
Второй день пытаюсь установить Windows 95 (не OSR2) на виртуалку и довести её до работоспособного состояния. Сначала оно говорило мне, что нашло некий драйвер по уплотнению дисков, хотя грузилось с дискеты, сделанной в Windows 98 (форматирование с копированием системных файлов – загрузчика и command.com). Но оказалось, что можно просто запустить сетап с ключом, который запрещает использовать сжатие. Так и написано. Теперь вот установила и выясняю, что скрипты не работают, программы мои не работают, даже функция IsDebuggerPresent() не найдена, и VM Additions не ставятся =_= Пока ставлю IE5: по идее мои программы должны заработать. Остальное, видимо, требует OSR2. Короче, Windows 98 рулит.