如何完全清除Windows C ++中的所有用户环境variables

我一直在努力取得任何进展,我可以将一个公司产品写入Unix,严重依赖于Unix兼容的版本。 这不太好。 我有两个不同的发展分支,有两个不同的问题。 在这个问题中,我必须移植Unix clearenv()函数的基本封装,它完全清除表中的所有用户环境variables。 可能出于安全原因,我找不到与Windowsclearenv()等效,并且我find/解决的一个解决scheme将清除进程中的所有环境variables,包括系统variables。 我想要一个解决scheme,将摆脱所有的用户环境variables,但不接触系统的。

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

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

从CreateEnvironmentBlock文档:

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

通过过程环境块并将其更改为与此函数返回的“仅系统”块匹配仍然有点麻烦,但至少您将获得必要的信息。

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

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

其次,使用函数SetEnvironmentVariable将NULL的值全部循环,这将删除环境值。