如果要永久设置环境变量,则可以将新值插入到注册表中。 例如使用vbscript,将路径“c:\ test”添加到PATH变量中
Set WshShell = WScript.CreateObject("WScript.Shell") strReg = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path" strSetting = WshShell.RegRead(strReg) strNewSetting = strSetting&";c\test" WshShell.RegWrite strReg, strNewSetting
因此,如果您使用Python或其他语言,则可以使用您自己的语言自己的api / modules来执行相同的操作来读取和写入注册表
在C#中,以下内容会创建一个永久环境变量:
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);
或者您可以尝试Windows PowerShell脚本; PowerShell默认安装在Windows 7上。
运行powershell.exe
PS C:\> [Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")
然后,例如,从cmd.exe
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\>echo %TestVariable% Test value. C:\>
或者(在新的)powershell.exe
PS C:\> echo $ENV:TestVariable Test Value. PS C:\>
对于其他人在寻找一个快速的命令行答案
SETX是可用的Windows服务器(本地我想 – http://technet.microsoft.com/en-us/library/cc755104.aspx )
它也可以在Windows 7和8工具包中使用 。
使用这样的环境类:
Environment.SetEnvironmentVariable("foo", "bar");
以编程方式修改环境变量仅适用于程序的持续时间。 没有听说过实际上修改整个系统的环境,并在那里实现它的有效性。 我不认为这是可以做到的,那就需要在特权层面进行探讨,并且可能会搞乱核心系统来实现这一目标。
即使在Unix下,尽管有一些黑客可以实现,但是还是无法完成的。 我记得看到实际上修改MSDOS下的环境变量的代码,通过改变MSDOS的_psp环境数据结构,但这是一个单任务系统和16位,没有任何保护。
总而言之,我认为你不能这样做,这样做是不明智的,因为如果尝试这样做,可能会觉得系统受到“木马”或“病毒”的威胁,不是一个人,作为一个用户,我不希望一个程序未经我的同意修改系统环境变量! 当然,一个程序可以写入注册表,使其永久性,但我仍然想知道它的目的是什么,为什么。