Есть ли способ постоянно устанавливать переменную среды с более чем 4096 символов в ОС Windows?

368
Dang Thien Nguyen

В настоящее время я ищу способ преодоления ограничения на длину переменной среды в ОС Windows, и максимальный предел, которого я достиг, составляет 4133. Но для моего проекта мне нужно проверить установку системы с более длинной средой пути (8000, 16000 или даже максимум 32000).

Команда setx отсутствует, поскольку она автоматически усекает путь среды до 1024 символов.

Я пробовал API SetEnvironmentVariable () PowerShell, и он, кажется, имеет ограничение ~ 4133 символа, остальное автоматически усекается или не работает должным образом.

Есть ли способ преодолеть этот предел?

0
Вы пробовали Win32 API или .NET API? Первый документ имеет максимум 32 КБ, поэтому усечение будет странным. grawity 5 лет назад 0
Все переменные среды (имена, значения, разделители, терминаторы) занимают один блок памяти. Размер этого блока составляет 32 КБ (-1 байт). Ваша задача выглядит неразрешимой ... по крайней мере, без расширения этого блока (и я не знаю, как это сделать). Akina 5 лет назад 0
Я не думаю, что это возможно сделать. Но не обязательно использовать `% PATH%` для проверки в любом случае. Почему бы просто не использовать абсолютный путь или просто CD в папку? Я уверен, что в переменной много избыточных путей. И даже если длина все еще слишком велика, вы можете легко смонтировать путь к более короткому с помощью `subst`,` mountvol` или символической ссылки. [Преодоление ограничения в 1024 символа с помощью setx] (https://superuser.com/q/387619/241386) phuclv 5 лет назад 0
@grawity для пользовательских переменных. Предел для переменной `% PATH%` составляет [2047/4095 символов] (https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable ), https://support.microsoft.com/en-us/help/2685893/error-messages-after-you-change-the-2047-character-limit-in-an-environ, https: // блоги. msdn.microsoft.com/oldnewthing/20100203-00/?p=15083 phuclv 5 лет назад 0

1 ответ на вопрос

1
harrymc

Документация Microsoft гласит, что переменная окружения в Windows ограничена только 32 767 символами ( ссылка ). Здесь не сказано, как создать очень длинную переменную.

Проблема здесь в том, что инструменты, предоставляемые Windows, имеют свои ограничения:

  • Команды set и setx усекают значения до 1023 символов.

  • Установка непосредственно в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentне удалась, поскольку regedit усекает введенные строки после 2047 символов.

Насколько я вижу, ваш единственный оставшийся вариант - написать небольшую программу, используя функцию API SetEnvironmentVariable Windows API, в документации которой указан предел в 32 767 символов. Сценарии здесь не помогут, так как они также имеют свои пределы.

Похожие вопросы