вторник, 2 ноября 2010 г.

Размер среды окружения при запуске DOS задач в Windows XP

Общеизвестно, что при запуске DOS-приложений размер окружения (Environment) ограничивается по-дефолту вполне определенной величиной (в XP, например, это значение равно 256 байт, если я правильно понял ). Как это проявляется ? Ну, вот, например, у вас есть переменные среды, в том числе и PATH, которые заданы средствами Windows (Мой Компьютер => Свойства => Дополнительно => Переменные Среды). При запуске DOS-приложений стартует виртуальная машина DOS-задач NTVDM, которая запускает command.com, получающий из всего пула переменных среды блок размером в 256 байт. То есть, если PATH у вас был длинный (а такое часто случается при установке приложений в папку Program Files, которые добавляют в переменную PATH пути к своим бинарниками или либам), то для DOS-задачи он будет урезан.

В частности, например, у меня приложение FPD 2.6 не видело свой конфигурационный файл config.fp, который был прописан в PATH файла Autoexec.bat. Оказалось, что просто содержимое файла Autoexec.bat при старте DOS-задачи _добавляется_ к содержимому переменной PATH, а так как PATH уже и так длинный, то хвост просто усекался и всё :)

Погуглив на эту тему, нашел вариант увеличения размера среды окружения, когда в файл Config.nt, лежащий в папке Windows\System32, добавляется строка

         Shell = c:\Windows\System32\Command.com /p /e:2048

(где вот эти "2048" и есть зарезервированный минимум размера среды окружения в байтах).

Но этот вариант у меня почему-то не сработал.

В общем, пришлось сделать не совсем красиво: записать в Autoexec.nt строку

         SET PATH = Нужный_Каталог;%PATH%

В этом случае "урезание" среды всё равно выполнятся, но за счет того, что требуемый каталог (каталоги) расположены в самом начале переменной PATH, им удается уцелеть. Вот такой костыль, я бы сказал.

Комментариев нет:

Отправить комментарий