答案 0 :(得分:21)
如果要永久设置环境变量,可以将新值插入注册表。例如,使用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来读取和写入注册表
答案 1 :(得分:8)
在C#中,以下内容创建了一个永久环境变量:
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);
答案 2 :(得分:5)
或者您可以尝试使用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:\>
答案 3 :(得分:4)
对于其他寻求快速命令行答案的人
SETX在Windows服务器上可用(我认为本身 - http://technet.microsoft.com/en-us/library/cc755104.aspx)
答案 4 :(得分:2)
使用像这样的Environment类:
Environment.SetEnvironmentVariable("foo", "bar");
答案 5 :(得分:-3)
以编程方式修改环境变量仅适用于程序的持续时间。没有听说过在整个系统范围内修改环境并使其有效。我不认为可以做到这一点,这需要在特权级别进行探索,并可能搞乱核心系统来实现这一目标。
即使在Unix下,尽管有一些黑客可以实现它,但仍然无法完成。我确实记得通过改变MSDOS的_psp环境数据结构,看到实际上修改了MSDOS下的环境变量的代码,但那是一个单任务系统和16bit,没有任何保护。
总而言之,我认为你不能这样做并且这样做是不明智的,如果试图将系统视为系统受到“特洛伊木马”或“病毒”的威胁这样做,并不孤单,作为用户,我不希望程序在未经我同意的情况下修改系统环境变量!当然,程序可以写入注册表以使其永久化,但我仍然想知道它的目的是什么以及为什么。