以编程方式修改环境变量?

时间:2010-01-23 02:14:35

标签: windows environment-variables

  • Windows 7。
  • 这是我自己的机器,所以无论是否需要管理员权限等都无关紧要。
  • 最好是在Python或.NET中,但如果有必要,我可以学习一些Win32(C / C ++)编程。

6 个答案:

答案 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:\>

结帐http://technet.microsoft.com/en-us/library/ff730964.aspx

答案 3 :(得分:4)

对于其他寻求快速命令行答案的人

SETX在Windows服务器上可用(我认为本身 - http://technet.microsoft.com/en-us/library/cc755104.aspx

它也可以在Windows 78 toolkit中找到。

答案 4 :(得分:2)

使用像这样的Environment类:

Environment.SetEnvironmentVariable("foo", "bar");

答案 5 :(得分:-3)

以编程方式修改环境变量仅适用于程序的持续时间。没有听说过在整个系统范围内修改环境并使其有效。我不认为可以做到这一点,这需要在特权级别进行探索,并可能搞乱核心系统来实现这一目标。

即使在Unix下,尽管有一些黑客可以实现它,但仍然无法完成。我确实记得通过改变MSDOS的_psp环境数据结构,看到实际上修改了MSDOS下的环境变量的代码,但那是一个单任务系统和16bit,没有任何保护。

总而言之,我认为你不能这样做并且这样做是不明智的,如果试图将系统视为系统受到“特洛伊木马”或“病毒”的威胁这样做,并不孤单,作为用户,我不希望程序在未经我同意的情况下修改系统环境变量!当然,程序可以写入注册表以使其永久化,但我仍然想知道它的目的是什么以及为什么。

相关问题