自己手动修改添加环境变量遇到的问题(二)

本文介绍如何使用C#和C++代码修改Windows系统环境变量,实现JAVA_HOME路径的注册表写入,使更改立即生效,无需重启计算机。详细解释了代码逻辑,并提供了一个C++程序示例,用于发送环境变量改变的消息。
  • 写注册表方式:

 下面是C# 代码,向注册表写入相应的值,来修改环境变量:

        private void WriteMainJavaPath2Reg(string strJAVAHome)
        {
            RegistryKey key = Registry.LocalMachine;
            RegistryKey software = null;

            //HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
            software = key.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment",true);
            string strPath = software.GetValue("Path").ToString();

            bool bTemp = strPath.EndsWith(";");//从字符串的最后位置开始查找是否有"这个符号
            if (bTemp)
            {
                strPath = strPath + strJAVAHome + "\\jre\\bin\\";
            }
            else
            {
                strPath = strPath + ";" + strJAVAHome + "\\jre\\bin\\";
            }

            software.SetValue("Path", strPath, RegistryValueKind.ExpandString);

            RegistryKey local_USER = Registry.CurrentUser;
            RegistryKey user_ev = null;

            user_ev = local_USER.OpenSubKey("Environment", true);
            if (user_ev == null)
            {
                user_ev = local_USER.CreateSubKey("Environment");
                user_ev.SetValue("PATH", strJAVAHome + "\\jre\\bin\\", RegistryValueKind.ExpandString);
            }
            else
            {
                string[] strEnvironmentNames = user_ev.GetValueNames();
                string strTemp = "";
                bool exists = ((System.Collections.IList)strEnvironmentNames).Contains("Path");
                if (exists)
                {
                    strTemp = user_ev.GetValue("PATH").ToString();
                }

                bTemp = strTemp.EndsWith(";");
                if (bTemp)
                {
                    strTemp = strTemp + strJAVAHome + "\\jre\\bin\\";
                }
                else
                {
                    if(strTemp.Length > 0)
                    {
                        strTemp = strTemp + ";" + strJAVAHome + "\\jre\\bin\\";
                    }
                    else
                    {
                        strTemp = strTemp  + strJAVAHome + "\\jre\\bin\\";
                    }
                }

                user_ev.SetValue("Path", strTemp, RegistryValueKind.ExpandString);
            }
        }

亲测,写注册表的方式在win10是不用重启电脑,修改后马上就可以使用,不过在win7,需要重启电脑,或者是打开windows 环境变量的窗口,点击一下确认,才可以使用。

其实,以上两种方式,都是写注册表的方式,因为set path,是当前工作环境临时有效。而后是无效的。

解决此问题的方法是: 新建一个windows 的c++ 程序,控制台的就好。

以下是此程序的全部代码,拿走不谢。

#include <windows.h>
int main()
{
	SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)TEXT("Environment"));
	return 0;
}

先写入环境变量的注册表,然后管理员运行此程序编译后的exe,那么环境变量就是立即生效了。上面这个程序的意思是,向所有windows桌面程序,发送环境变量发生改变的消息。

还有一种方法,可以直接就修改了环境变量,而不用另外写程序发送 WM_SETTINGCHANGE 消息。

欲知详情,请听下回讲解。关注我的博客哟,www.qq249191508.com

### 手动配置Anaconda环境变量的详细步骤 在安装Anaconda时,如果没有选择自动添加环境变量中,可以通过手动配置环境变量的方式解决。以下是具体的配置方法和相关说明。 #### 1. 确认Anaconda的安装路径 首先需要确认Anaconda的安装路径。通常情况下,默认安装路径为: - `C:\Users\YourUsername\Anaconda3`(适用于Windows用户) - 或者 `C:\ProgramData\Anaconda3`[^3] 如果安装路径与上述不同,请根据实际安装情况调整路径。 #### 2. 打开系统环境变量设置界面 通过以下步骤打开系统环境变量设置界面: - 按下 `Win + R` 键,输入 `sysdm.cpl` 并回车。 - 在弹出的“系统属性”窗口中,切换到“高级”选项卡。 - 点击“环境变量”按钮[^2]。 #### 3. 编辑系统变量中的Path 在“环境变量”窗口中: - 在“系统变量”区域找到 `Path` 变量,并双击编辑。 - 在弹出的编辑窗口中,点击“新建”,然后依次添加以下路径: - 安装路径根目录:`D:\anaconda` - Scripts子目录:`D:\anaconda\Scripts\` - Library/bin子目录:`D:\anaconda\Library\bin` - Library/mingw-w64/bin子目录:`D:\anaconda\Library\mingw-w64\bin`[^2] 注意:以上路径中的 `D:\anaconda` 需要替换为实际的Anaconda安装路径。 #### 4. 保存并验证配置 完成上述操作后,点击“确定”保存所有更改。重新启动命令行工具(CMD),输入以下命令进行验证: ```bash conda --version ``` 如果显示类似 `conda 4.x.x` 的版本信息,则说明配置成功。 #### 注意事项 - 如果操作系统中已经存在其他Python或软件的环境变量配置,确保新添加的Anaconda路径优先级较高,以避免冲突。 - 如果遇到权限问题,可以尝试以管理员身份运行命令提示符或相关操作。 ### 示例代码 以下是一个简单的示例,用于验证Anaconda是否正确配置: ```python import sys print(sys.executable) ``` 运行该脚本时,输出的路径应指向Anaconda的Python解释器路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chen249191508

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值