我一直在努力将公司编写的、严重依赖 Unix 的产品移植到 Windows 兼容版本中,尽我所能取得进展。进展不太顺利。我有两个不同的开发分支,有两个不同的问题。在这个问题中,我必须移植本质上是 Unix clearenv()
函数的包装器,该函数完全清除表中的所有用户环境变量。可能出于安全原因,我找不到与 Windows 的 clearenv()
等效的方法,而我找到/想出的一个解决方案会清除进程中的所有环境变量,包括系统变量。我想要一个能够消除所有用户环境变量的解决方案,但不涉及系统变量。
我知道这可能是一件愚蠢的事情,但它在代码中,所以我必须尝试移植它。
另外,如果有帮助的话,我正在 MinGW 下编译
最佳答案
来自 CreateEnvironmentBlock 的文档:
hToken [in, optional] [...] If this parameter is NULL, the returned environment block contains system variables only.
遍历进程环境 block 并将其更改为匹配此函数返回的“仅系统” block 仍然会有点困惑,但至少您将拥有必要的信息。
关于c++ - 如何完全清除Windows C++中的所有用户环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885901/