Obecnie szukam sposobu na przekroczenie limitu długości zmiennej środowiskowej w systemie operacyjnym Windows, a maksymalny osiągnięty limit to 4133. Ale w moim projekcie muszę sprawdzić instalację systemu z dłuższą ścieżką (8000, 16000 lub nawet maksymalnie 32000).
polecenie setx jest wyłączone, ponieważ automatycznie obciąło środowisko ścieżki do 1024 znaków.
Próbowałem API SetEnvironmentVariable () PowerShell i wydaje się, że ma limit ~ 4133 znaków, reszta jest automatycznie obcinana lub nie działa poprawnie.
Czy jest jakiś sposób na przekroczenie tego limitu?
environment-variables
window
Dang Thien Nguyen
źródło
źródło
%PATH%
do weryfikacji. Dlaczego nie użyć bezwzględnej ścieżki lub po prostu płyty CD do folderu? Jestem pewien, że w zmiennej jest wiele zbędnych ścieżek. A nawet jeśli długość jest nadal zbyt długo można łatwo zamontować drogę do jednego z krótszymsubst
,mountvol
lub dowiązania symbolicznego. Pokonanie limitu 1024 znaków dzięki setx%PATH%
zmiennej wynosi 2047/4095 znaków , support.microsoft.com/en-us/help/2685893/... , blogs.msdn.microsoft.com/oldnewthing/20100203-00/?p=15083Odpowiedzi:
Dokumentacja Microsoft mówi, że zmienna środowiskowa w systemie Windows jest ograniczona do 32 767 znaków ( link ). Nie mówi, jak utworzyć bardzo długą zmienną.
Problem polega na tym, że narzędzia oferowane przez system Windows mają swoje ograniczenia:
Komendy set i setx obcinają wartości do 1023 znaków.
Ustawienie bezpośrednio w rejestrze na
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
, kończy się niepowodzeniem, ponieważ regedit obcina wprowadzone ciągi znaków po 2047 znakach.O ile widzę, twoją jedyną pozostałą opcją jest napisanie małego programu za pomocą funkcji Windows API SetEnvironmentVariable , której dokumentacja określa limit 32 767 znaków. Skrypty tutaj by nie pomogły, ponieważ mają również swoje ograniczenia.
źródło