![Windows 11 对环境变量的长度限制是否有 32,767 个字符?](https://linux22.com/image/1706081/Windows%2011%20%E5%AF%B9%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E9%95%BF%E5%BA%A6%E9%99%90%E5%88%B6%E6%98%AF%E5%90%A6%E6%9C%89%2032%2C767%20%E4%B8%AA%E5%AD%97%E7%AC%A6%EF%BC%9F.png)
(也可以看看:为什么 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?如果创建这么大的环境变量,会不会有什么功能停止工作?