c++ - 如何完全清除Windows C++中的所有用户环境变量

标签 c++ windows environment-variables

我一直在努力将公司编写的、严重依赖 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/

相关文章:

c++ - 为什么 std::lock_guard 不可移动?

c++ - 如何区分控制台程序是在 Powershell 中打开还是在 Windows 终端中打开?

excel - 重新加载环境变量而不重新启动Excel?

heroku - 设置包含特殊字符 $ 的 Heroku 配置变量

security - 是否安全访问环境变量标识的目录中的文件?

c++ - 我需要一个测试用例来证明我的算法/代码是错误的

c++ - QT。 Q标签性能

c++ - 派生类与基类之间构造函数的调用顺序

windows - 为什么 cygwin 不读取我的主目录中的 .ssh/config 文件?

linux - 将Window Api---GetVolumeInformation移植到Linux