vs 修改系统环境变量putenv、_putenv

2024-01-08 20:39:09

事情起因是某一天需要在vs2010的工程中去动态配置adb环境变量,win10环境

一开始,使用了putenv,很快进入代码调试,死活无法达成目的(奇怪的是另外一个工程就能修改成功)

一番面向运气编程,最后用_putenv实现了配置环境变量。

但不知道根本原因是啥,做出一些猜想:

putenv已经被取代,在某些场景下用不了,只能用_putenv,下面是官方说明文档里面的内容

下面的是代码

        char szbuffer [2048] = {0};
		CString str;
		std::string strPath = getenv("PATH");
		str = strPath.c_str();
		str = _T("PATH=") + str + _T(";D:\AdbPath");
		CoverCStringToChar(str,szbuffer,2048);
		_putenv(szbuffer);
		std::string strTemp = getenv("PATH");
//字符转换
int CoverCStringToChar(const CString &strsrc,char *szdet,int len)
{
	int n = strsrc.GetLength();
    int charlen = 0;

	int lenByte = WideCharToMultiByte(CP_ACP, 0, strsrc, n, NULL, 0, NULL, NULL);
	charlen = WideCharToMultiByte(CP_ACP, 0, strsrc, n, szdet, lenByte, NULL, NULL); 

	return charlen;
}

附加说明

putenv, _putenv, _tputenv, _wputenv:修改一个操作系统环境变量的值,只是针对当前进程有效

?_putenv_s、_wputenv_s?是这些函数的更安全版本

文章来源:https://blog.csdn.net/Super_Jadroid/article/details/135464295
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。