有什么方法可以通过C ++在Windows中添加环境变量?
必须在“我的电脑 - >属性 - >高级 - >环境变量”中添加它们
谢谢
答案 0 :(得分:10)
来自MSDN:
以编程方式添加或修改 系统环境变量,添加它们 到了 然后是
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
注册表项 广播WM_SETTINGCHANGE
消息 将lParam
设置为字符串 “环境”。这允许 应用程序,如shell,to 拿起你的更新......
答案 1 :(得分:3)
我知道的唯一方法是通过注册表。
提示,全局变量位于HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
以及HKEY_USERS\*\Environment
中每个用户的变量,其中*
表示用户的SID。
答案 2 :(得分:1)
这是一个简单的实现(基于SteelBytes发布的MSDN指令):
bool SetPermanentEnvironmentVariable(LPCTSTR value, LPCTSTR data)
{
HKEY hKey;
LPCTSTR keyPath = TEXT("System\\CurrentControlSet\\Control\\Session Manager\\Environment");
LSTATUS lOpenStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyPath, 0, KEY_ALL_ACCESS, &hKey);
if (lOpenStatus == ERROR_SUCCESS)
{
LSTATUS lSetStatus = RegSetValueEx(hKey, value, 0, REG_SZ,(LPBYTE)data, strlen(data) + 1);
RegCloseKey(hKey);
if (lSetStatus == ERROR_SUCCESS)
{
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_BLOCK, 100, NULL);
return true;
}
}
return false;
}
答案 3 :(得分:0)
答案 4 :(得分:0)
#include <iostream>
#include <windows.h>
#include <cstring>
#include "tchar.h"
void SetUserVariablePath(){
HKEY hkey;
long regOpenResult;
const char key_name[] = "Environment";
const char path[]="D:/custom_command"; //new_value path need to update
regOpenResult = RegOpenKeyEx(HKEY_CURRENT_USER,key_name, 0, KEY_ALL_ACCESS, &hkey);
LPCSTR stuff = "VVS_LOGGING_PATH"; //Variable Name
RegSetValueEx(hkey,stuff,0,REG_SZ,(BYTE*) path, strlen(path));
RegCloseKey(hkey);
}
void GetUserVariablePath(){
static const char path[] = "VVS_LOGGING_PATH" ; //Variable Name
static BYTE buffer1[1000000] ;
DWORD buffsz1 = sizeof(buffer1) ;
{
//HKEY_CURRENT_USER\Environment
const char key_name[] = "Environment";
HKEY key ;
if( RegOpenKeyExA( HKEY_CURRENT_USER, key_name, 0, KEY_QUERY_VALUE, std::addressof(key) ) == 0 &&
RegQueryValueExA( key, path, nullptr, nullptr, buffer1, std::addressof(buffsz1) ) == 0 )
{
std::cout << "The updated value of the user variable is : " << reinterpret_cast<const char*>(buffer1) << '\n' ;
}
}
}
int main()
{
SetUserVariablePath();
GetUserVariablePath();
return 0;
}
答案 5 :(得分:-1)
Windows中的环境变量存储在Windows注册表中。您可以使用“SetEnvironmentVariable”功能,请参阅下面链接中的功能文档。