Gibt es eine Möglichkeit, eine Umgebungsvariable mit mehr als 4096 Zeichen unter Windows OS dauerhaft zu setzen?

443
Dang Thien Nguyen

Ich bin derzeit auf der Suche nach einem Weg, um die Begrenzung der Umgebungsvariablenlänge unter Windows OS zu überwinden. Ich habe maximal 4133 erreicht. Für mein Projekt muss ich jedoch die Systeminstallation mit einer längeren Pfadumgebung (8000 16000 oder sogar maximal 32000).

Der Befehl setx ist out, da die Pfadumgebung automatisch auf 1024 Zeichen gekürzt wird.

Ich habe die API SetEnvironmentVariable () von PowerShell ausprobiert und scheint ein Limit von ~ 4133 Zeichen zu haben. Der Rest wird automatisch abgeschnitten oder funktioniert nicht ordnungsgemäß.

Gibt es überhaupt eine Grenze, um diese Grenze zu überwinden?

0
Haben Sie die Win32-API oder eine .NET-API ausprobiert? Erstere sind mit maximal 32k dokumentiert, so dass eine Kürzung ungerade wäre. grawity vor 5 Jahren 0
Alle Umgebungsvariablen (Namen, Werte, Trennzeichen, Abschlusszeichen) belegen einen Speicherblock. Die Größe dieses Blocks beträgt 32 KB (-1 Byte). Ihre Aufgabe scheint unlösbar zu sein ... ohne diesen Block zumindest zu erweitern (und ich weiß nicht, wie ich das machen soll). Akina vor 5 Jahren 0
Ich glaube nicht, dass das möglich ist. Es ist jedoch nicht unbedingt erforderlich,% PATH% für die Überprüfung zu verwenden. Warum verwenden Sie nicht einfach einen absoluten Pfad oder nur eine CD in den Ordner? Ich bin sicher, dass die Variable viele redundante Pfade enthält. Und selbst wenn die Länge noch zu lang ist, können Sie den Pfad mit `subst`,` mountvol` oder einem symbolischen Link problemlos zu einem kürzeren Pfad verbinden. [1024 Zeichenlimit mit setx überwinden] (https://superuser.com/q/387619/241386) phuclv vor 5 Jahren 0
@grawity für benutzerdefinierte Variablen. Die Grenze für die Variable% PATH% ist [2047/4095 Zeichen] (https://software.intel.com/de-de/articles/limitation-to-the-length-von-des-system-path-variable) ), https://support.microsoft.com/de-de/help/2685893/error-messages-after-you-change-the-2047-character-limit-in-an-environ, https: // blogs. msdn.microsoft.com/oldnewthing/20100203-00/?p=15083 phuclv vor 5 Jahren 0

1 Antwort auf die Frage

1
harrymc

Die Dokumentation von Microsoft besagt, dass eine Umgebungsvariable unter Windows nur 32.767 Zeichen umfasst ( Link ). Es wird nicht gesagt, wie eine sehr lange Variable erstellt wird.

Das Problem hierbei ist, dass die von Windows bereitgestellten Tools alle ihre Grenzen haben:

  • Die Befehle set und setx kürzen die Werte auf 1023 Zeichen.

  • Die Einstellung direkt in der Registrierung um HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, schlägt fehl, da regedit eingegebene Zeichenfolgen nach 2047 Zeichen abschneidet.

Soweit ich sehen kann, besteht die einzige verbleibende Option darin, ein kleines Programm zu schreiben, das die Windows-API-Funktion SetEnvironmentVariable verwendet, deren Dokumentation das Limit von 32.767 Zeichen angibt. Skripte würden hier nicht helfen, da sie auch ihre Grenzen haben.