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

时间:2016-08-11 01:26:27

标签: c++ windows environment-variables

我一直在努力取得任何进展,我可以将公司产品编写并严重依赖Unix,转换为Windows兼容版本。情况并不顺利。我有两个不同的开发分支,有两个不同的问题。在这个问题中,我必须移植基本上是Unix clearenv()函数的包装器,它完全清除表中的所有用户环境变量。可能出于安全原因,我找不到与Windows clearenv()等效的内容,而我找到/提出的一个解决方案将擦除流程中的所有环境变量,包括系统变量。我想要一个解决方案,摆脱所有用户环境变量,但不是触摸系统变量。

我知道这可能是一个愚蠢的事情,但它在代码中,所以我必须尝试移植它。

另外,如果有帮助,我在MinGW下进行编译

2 个答案:

答案 0 :(得分:1)

来自CreateEnvironmentBlock的文档:

  

hToken [in,optional]   [...]如果此参数为NULL,则返回的环境块仅包含系统变量。

通过流程环境块并将其更改为仅匹配"系统仍然有点混乱。阻止此函数返回,但至少您将获得必要的信息。

答案 1 :(得分:1)

你可以编写一个简单的函数来删除当前的环境变量。

首先,您可以使用CreateEnvironmentBlock函数来检索包含整个键阵列的块。

其次,使用函数SetEnvironmentVariable循环所有值为NULL的键,这将删除环境值。