Windows 11 对环境变量的长度限制是否有 32,767 个字符?

Windows 11 对环境变量的长度限制是否有 32,767 个字符?

(也可以看看:为什么 Windows 对环境变量有限制?

根据 Windows 应用程序开发文档,“用户定义的环境变量的最大大小为 32,767 个字符。”我创建了一个 Rust 包来测试这个限制。令我惊讶的是,我能够创建一个比 32,767 个字符长得多的环境变量。


Cargo.toml

[package]
name = "big-variable-test"
edition = "2021"

[[bin]]
name = "big-variable-creator"
path = "src/big_variable_creator.rs"

[[bin]]
name = "big-variable-size-checker"
path = "src/big_variable_size_checker.rs"

src\big_variable_creator.rs

// This is the largest number that I’ve gotten to work. It’s much larger than the limit that the
// documentation stated.
const MAX_ENVIRONMENT_VARIABLE_LENGTH: usize = 999999999;

fn main() {
    std::process::Command::new("cargo")
        .args(["run", "--bin", "big-variable-size-checker"])
        .env("BIG_VARIABLE", "A".repeat(MAX_ENVIRONMENT_VARIABLE_LENGTH))
        .spawn()
        .expect("cargo should have started")
        .wait()
        .expect("cargo should be running");
}

src\big_variable_size_checker.rs

fn main() {
    let number_of_chars = std::env::var("BIG_VARIABLE")
        .expect("BIG_VARIABLE should be set")
        .chars()
        .count();
    println!("{}", number_of_chars);
}

当我运行 时cargo run --bin big-variable-creator,我可以看到它能够创建一个长度为 999,999,999 个字符的环境变量。经过进一步的研究,我发现微软开发者博客上的一篇文章写道:

此程序创建一个环境块,该块仅包含一个变量,名为 ,x其值为 131,067 份字母x。 它并不引人注目,当然也没有什么用处,但它确实表明 Windows 对此很满意。


Windows 11 对环境变量的长度限制是否真的有 32,767 个字符,还是仅适用于旧版本的 Windows?如果创建这么大的环境变量,会不会有什么功能停止工作?

相关内容