设置环境变量 - RegistrySetEnvironmentVariable
函数简介
设置环境变量,内部基于注册表与系统API实现,支持用户级和系统级环境变量。
接口名称
RegistrySetEnvironmentVariable
DLL调用
int32_t RegistrySetEnvironmentVariable(int64_t instance, const char* name, const char* value, int32_t systemWide)
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。name(字符串): 环境变量名称value(字符串): 环境变量值systemWide(整型数): 是否为系统级环境变量- 1: 系统级(所有用户可见)
- 0: 当前用户级
示例:
// 创建OLA对象
int64_t instance = CreateCOLAPlugInterFace();
// 设置用户级环境变量
int32_t result = RegistrySetEnvironmentVariable(instance, "OLA_HOME", "C:\\OLAPlug", 0);
if (result == 1) {
printf("成功设置用户级环境变量\n");
}
// 设置用户级PATH(追加)
// 注意:需要先读取现有PATH,然后追加新路径
int64_t existingPath = RegistryGetEnvironmentVariable(instance, "PATH", 0);
if (existingPath != 0) {
char newPath[4096];
snprintf(newPath, sizeof(newPath), "%s;C:\\OLAPlug\\bin", (const char*)existingPath);
RegistrySetEnvironmentVariable(instance, "PATH", newPath, 0);
FreeStringPtr(instance, existingPath);
}
// 设置系统级环境变量(需要管理员权限)
result = RegistrySetEnvironmentVariable(instance, "OLA_SYSTEM_CONFIG", "C:\\Program Files\\OLAPlug\\config", 1);
if (result == 1) {
printf("成功设置系统级环境变量\n");
} else {
printf("设置失败,可能需要管理员权限\n");
}
// 释放资源
DestroyCOLAPlugInterFace(instance);
返回值
整型数:
- 1: 成功
- 0: 失败
注意事项
- 设置系统级环境变量(systemWide=1)需要管理员权限
- 环境变量设置后可能需要重新启动应用程序或系统才能生效
- 修改PATH等系统变量时建议先读取现有值,再追加新值
- 环境变量名称不区分大小写
- 设置后会立即写入注册表,但当前进程需要刷新才能获取新值
- 系统级环境变量存储在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
- 用户级环境变量存储在 HKEY_CURRENT_USER\Environment
