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

How to completely clear all User Environment variables in Windows C++

本文关键字:环境变量 Windows c++ 用户 何完全 清除      更新时间:2023-10-16

我一直在尽我所能将一个公司的产品移植到一个与Windows兼容的版本中。事情不太顺利。我有两个不同的开发分支,有两个不同的问题。在这个问题中,我必须移植本质上是Unix clearenv()函数的包装器,它完全从表中清除所有用户环境变量。可能出于安全原因,我无法在Windows上找到与clearenv()等效的工具,我找到/提出的一个解决方案是,删除进程中的所有环境变量,包括系统变量。我想要一个解决方案,将摆脱所有的用户环境变量,但不触及系统的。

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

另外,如果有帮助的话,我在MinGW

下编译

来自CreateEnvironmentBlock的文档:

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

检查进程环境块并将其更改为匹配此函数返回的"system only"块仍然有点混乱,但至少您将获得必要的信息。

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

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

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