_putenv_s, _wputenv_s

创建,修改或移除环境变量。 这些是 _putenv, _wputenv 的版本,但具有安全增强功能,如 CRT中的安全功能所述。

重要

此 API 不能在 Windows 运行时执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW

errno_t _putenv_s(
   const char *name,
   const char *value 
);
errno_t _wputenv_s(
   const wchar_t *name,
   const wchar_t *value
);

参数

  • name
    环境变量名称。

  • value
    设置环境变量的值。

返回值

返回 0;如果成功或错误代码。

错误状态

name

value

返回值

NULL

any

EINVAL

any

NULL

EINVAL

如果其中一个错误状态,当调用这些功能无效参数处理程序,如 参数验证所述。 如果执行允许继续,这些函数返回 EINVAL 并将 errno 到 EINVAL。

备注

_putenv_s 功能添加新环境变量或修改现有环境变量的值。 环境变量定义过程执行环境 (例如,与程序可以将链接库的默认值查找路径)。 _wputenv_s 是 _putenv_s的宽字符版本;为 _wputenv_s 的 envstring 参数是宽字符字符串。

一般文本例程映射

TCHAR.H 实例

未定义的_UNICODE & _MBCS

定义的_MBCS

定义的_UNICODE

_tputenv_s

_putenv_s

_putenv_s

_wputenv_s

name 是要添加的环境变量的名称或修改和 value 是易失值。 如果 name 已经属于该环境的一部分,其值。value替换;否则,变量新 name 及其 value 添加到该环境。 您可以从该环境移除变量通过指定空字符串 (即" ") value的。

_putenv_s 和 _wputenv_s 影响是本地到当前进程仅环境;不能将这些修改命令级环境。 这些功能在可访问的。运行库而不是环境“段”操作系统进程创建的数据结构只运行。 在当前进程时停止,环境还原到调用级别处理,在大多数情况下是该操作系统级别。 但是,修改环境可传递到由 _spawn、_exec或 system创建的任何更新过程,并且,这些更新过程获取 _putenv_s 和 _wputenv_s添加的所有新项目。

不要直接更改环境项;相反,应使用 _putenv_s 或 _wputenv_s 更改它。 具体而言,直接释放 _environ[] 全局数组的元素可能会导致无效内存解决。

getenv 和 _putenv_s 使用全局变量 _environ 访问环境表;_wgetenv 和 _wputenv_s 使用 _wenviron。 _putenv_s 和 _wputenv_s 能更改 _environ 和 _wenviron的值从而无效 envp 参数。main 和 _wenvp 参数。wmain。 因此,使用 _environ 或 _wenviron 访问环境信息会更加安全。 有关 _putenv_s 和 _wputenv_s 的更多信息关系全局变量,请参见 _environ, _wenviron

备注

功能 _putenv_s_getenv_s 系列不是线程安全的。_getenv_s 可以返回字符串指针,当 _putenv_s 修改该字符串时从而导致随机崩溃。确保对这些函数同步。

要求

实例

必需的标头

_putenv_s

<stdlib.h>

_wputenv_s

<stdlib.h> 或 <wchar.h>

有关其他的兼容性信息,请参见 兼容性

示例

有关演示如何使用 _putenv_s,请参见 getenv_s, _wgetenv_s的示例。

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例

请参见

参考

处理和环境控件

getenv, _wgetenv

_searchenv, _wsearchenv