【问题标题】:How to completely clear all User Environment variables in Windows C++如何在 Windows C++ 中完全清除所有用户环境变量
【发布时间】:2016-12-17 13:48:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ windows environment-variables


    【解决方案1】:

    来自CreateEnvironmentBlock 的文档:

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

    遍历进程环境块并更改它以匹配此函数返回的“仅限系统”块仍然会有点混乱,但至少你会有必要的信息。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 2016-02-12
        • 1970-01-01
        • 2012-03-21
        • 2015-08-20
        • 2017-06-18
        • 1970-01-01
        • 2010-10-15
        相关资源
        最近更新 更多