我一直在努力取得任何进展,我可以将公司产品编写并严重依赖Unix,转换为Windows兼容版本。情况并不顺利。我有两个不同的开发分支,有两个不同的问题。在这个问题中,我必须移植基本上是Unix clearenv()
函数的包装器,它完全清除表中的所有用户环境变量。可能出于安全原因,我找不到与Windows clearenv()
等效的内容,而我找到/提出的一个解决方案将擦除流程中的所有环境变量,包括系统变量。我想要一个解决方案,摆脱所有用户环境变量,但不是触摸系统变量。
我知道这可能是一个愚蠢的事情,但它在代码中,所以我必须尝试移植它。
另外,如果有帮助,我在MinGW下进行编译
答案 0 :(得分:1)
来自CreateEnvironmentBlock的文档:
hToken [in,optional] [...]如果此参数为NULL,则返回的环境块仅包含系统变量。
通过流程环境块并将其更改为仅匹配"系统仍然有点混乱。阻止此函数返回,但至少您将获得必要的信息。
答案 1 :(得分:1)
你可以编写一个简单的函数来删除当前的环境变量。
首先,您可以使用CreateEnvironmentBlock函数来检索包含整个键阵列的块。
其次,使用函数SetEnvironmentVariable循环所有值为NULL的键,这将删除环境值。