Windows环境变量含义/如何设置后立即生效/系统和用户环境变量区别

环境变量在Windows中扮演关键角色,尤其是PATH变量,确保在命令行中能执行程序。系统环境变量对所有用户生效,用户环境变量仅影响当前用户。PATH变量的值是用户变量与系统变量的组合。了解这些差异对于正确配置软件如Anaconda、Java和Python至关重要。
摘要由CSDN通过智能技术生成

1.首先理解Windows环境变量是干嘛的
在安装anaconda、java、python等的时候,要求修改环境变量,主要是修改path这个变量,以保证在cmd命令行窗口中输入特定命令后,计算机能够根据path里面提供的路径找到相应的实施对象。例如,在cmd中输入python,计算机就会根据path中提供的A:\software\python3.7路径找到python.exe这个应用程序然后开启之。

2.系统环境变量和用户环境变量的区别
核心总结:一台计算机有多个账号(用户),系统环境变量,对所有用户起作用,而用户环境变量只对当前用户起作用。
点击“我的电脑→属性→高级系统设置”标签的“环境变量”按钮,出现“环境变量”对话框,如果当前是以Administrator登录系统的用户,对话框的上面为Administrator的用户变量,对话框的下面为系统变量(即相当于系统中所有用户的用户变量)。有的时候我们会看到在用户变量和系统变量中都存在某一个环境变量,比如path,那么path的值到底是用户变量中的值还是系统变量中的值,或者两者都不是呢?答案是两者都不是。path变量的值是用户变量中的值与系统变量中的值的叠加。

  “ ***系统环境变量,对所有用户起作用,而用户环境变量只对当前用户起作用***” 

https://zhuanlan.zhihu.com/p/88638645

https://zhuanlan.zhihu.com/p/67726501#:~:text=%E6%89%80%E8%B0%93%20Windows,%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%8C%E6%8C%87%E7%9A%84%E6%98%AF%20Windows%20%E6%8C%87%E5%AE%9A%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%B7%A5%E4%BD%9C%E7%8E%AF%E5%A2%83%E7%9A%84%E4%B8%80%E4%BA%9B%E9%80%89%E9%A1%B9%E6%88%96%E5%B1%9E%E6%80%A7%E5%8F%82%E6%95%B0%E3%80%82

Windows 操作系统中,修改环境变量后需要重新打开命令行窗口或者重新启动计算机才能使修改生效。如果想要在 Python 脚本中实现修改环境变量立即生效的功能,可以使用以下方法: 1. 使用 `os.environ` 对象修改环境变量,并且使用 `ctypes` 模块调用 `SendMessage` API 发送消息给 Windows Explorer 进程,通知它更新环境变量。示例代码如下: ``` import os import ctypes # 修改环境变量 PATH new_path = os.environ['PATH'] + ';C:\\NewFolder' os.environ['PATH'] = new_path # 发送消息给 Windows Explorer 进程,通知它更新环境变量 HWND_BROADCAST = 0xFFFF WM_SETTINGCHANGE = 0x1A SMTO_ABORTIFHUNG = 0x0002 result = ctypes.windll.user32.SendMessageTimeoutW( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 'Environment', SMTO_ABORTIFHUNG, 5000, None ) if result == 0: print('Failed to update environment variables') else: print('Environment variables updated successfully') ``` 在代码中,首先使用 `os.environ` 对象修改环境变量 PATH,然后使用 `ctypes` 模块调用 `SendMessage` API 发送消息给 Windows Explorer 进程,通知它更新环境变量。如果更新成功,`SendMessage` API 将返回一个非零值,否则返回零。 2. 使用 `winreg` 模块修改系统注册表中的环境变量,并且使用 `win32api` 模块调用 `SendMessage` API 发送消息给 Windows Explorer 进程,通知它更新环境变量。示例代码如下: ``` import winreg import win32api # 修改环境变量 PATH with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as hkey: with winreg.OpenKeyEx(hkey, r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 0, winreg.KEY_WRITE) as key: new_path = winreg.QueryValueEx(key, 'PATH')[0] + ';C:\\NewFolder' winreg.SetValueEx(key, 'PATH', 0, winreg.REG_EXPAND_SZ, new_path) # 发送消息给 Windows Explorer 进程,通知它更新环境变量 HWND_BROADCAST = 0xFFFF WM_SETTINGCHANGE = 0x1A SMTO_ABORTIFHUNG = 0x0002 result = win32api.SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 'Environment', SMTO_ABORTIFHUNG, 5000) if result == 0: print('Failed to update environment variables') else: print('Environment variables updated successfully') ``` 在代码中,首先使用 `winreg` 模块修改系统注册表中的环境变量 PATH,然后使用 `win32api` 模块调用 `SendMessage` API 发送消息给 Windows Explorer 进程,通知它更新环境变量。如果更新成功,`SendMessage` API 将返回一个非零值,否则返回零。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值