如何在Windows Server 2008 R2中将用户环境变量设置为普通用户?


67

在较旧版本的Windows中,只需打开控制面板,选择“系统”小程序,选择“高级”选项卡,然后单击“环境变量”按钮。作为普通用户,您可以编辑“用户变量”,但不能编辑“系统变量”。

在Windows Server 2008 R2中,如果我尝试点击系统小程序中的“高级系统设置”选项,它将提示您输入管理员密码。


好线程,但我投票赞成将其移至服务器故障
Adam Tuttle

Answers:


87

您还可以使用此直接命令行打开“高级系统属性”:

sysdm.cpl

然后转到高级选项卡->环境变量


6
这是这样做的方法。伙计,在Windows Server 2012上,这变得异常复杂。有关如何在Windows Server 2012中添加环境变量的信息,请参阅technet。它们告诉您安装组策略管理控制台。这是不必要的。@AlexCode的解决方案是获取旧的熟悉对话框的正确方法。
David Barrows 2015年

3
方便的命令,但这仍然需要提升的特权,因此对于普通用户不起作用。OP的答案是正确的。
greenlaw

65

好,我找到了。精氨酸,一种沮丧的运动。他们留下了用于更改环境变量的旧窗口菜单遍历路径,但仅限于管理员访问。作为普通用户,如果要更改它,则需要经过一组不同的选项才能到达相同的窗口。

控制面板->用户帐户->用户帐户->更改我的环境变量。


21

分步说明:

  • 转到控制面板\系统和安全\系统
  • 点击更改设置
  • 转到“高级”标签
  • 单击环境变量

3
我认为这不适合发帖人的问题...看到有关不希望以管理员身份执行此操作的信息
Foon

在我的WinSvr 2008 R2框上,将第二和第三个项目符号替换为:单击“高级系统设置”
JohnC 2013年

6

在“开始”下,在搜索字段中输入“环境”。这将在开始菜单中直接列出更改系统变量的选项。


4

可以使用SETX命令从命令行完成此操作。例如,将您的临时文件“移动”到另一个磁盘:

SETX TEMP d:\tmp

哇,谢谢你的命令 现在,我可以将env var设置为非交互式用户。+1。对于需要运行批处理的服务帐户而言,这确实很有帮助。
PollusB

2

在命令行提示符下:

set __COMPAT_LAYER=RUNASINVOKER
SystemPropertiesAdvanced.exe

现在,您可以设置用户环境变量。


好了,您可以以相同的方式设置视觉效果/性能设置。:)
excitoon 2014年

2

我在桌面上创建了一个Godmode文件夹。只需在桌面上创建一个新文件夹并将其命名为GodMode。{ED7BA470-8E54-465E-825C-99712043E01C}它将命名该文件夹为Godmode并使用各种配置选项填充内容,然后可以在搜索中键入ENVIRO要找到相关的配置选项,请打开它,然后在“高级”选项卡中打开sysdm.cpl,您可以在此处更改环境变量。


1

有三种方法

1)这将为用户环境变量运行GUI编辑器。它确实执行OP想要做的事情,并且不提示输入管理凭据。

rundll32.exe sysdm.cpl,EditEnvironmentVariables

(奖金:这适用于Windows Vista到Windows 10的台式机以及Windows Server 2008到Server2016。它不适用于Windows NT,2000,XP和2003。但是,在较旧的系统上,您可以使用sysdm.cpl而无需“,EditEnvironmentVariables”参数,然后导航到“高级”选项卡,然后导航到“环境变量”按钮。)

2)在命令提示符下使用SETX命令。这类似于set命令,但是会更新存储在注册表中的环境。不幸的是,SETX不如内置的SET命令那么容易使用。例如,无法列出变量。因此,不可能执行诸如将文件夹附加到用户的PATH变量之类的操作。尽管SET将显示变量,但您不知道哪个是用户变量还是系统变量,并且显示的PATH是两者的组合。

3)使用regedit并导航到HKEY_CURRENT_USER \ Environment

请记住,对用户环境的更改不会立即传播到该用户当前正在运行的所有进程。您可以在命令提示符下看到此信息,如果使用SET,则您的更改将不可见。例如

rem Add a user environment variable named stackoverflow that's set to "test"
setx stackoverflow test
set st

这应该显示所有名称以字母“ st”开头的变量。如果没有,则显示“ Environment variable st not defined”。退出命令提示符并启动另一个。再试set st一次,您会看到

stackoverflow=test

要删除stackoverflow变量,请使用

setx stackoverflow ""

它将以“ SUCCESS: Specified value was saved.”响应,如果您要删除该变量,它看起来很奇怪。但是,如果您启动一个新的命令提示符,set st则将显示没有以字母“ st”开头的变量

(更正-我发现setx stackoverflow ""并没有删除该变量。它在注册表中为空字符串。SET尽管该命令将其解释为好像没有变量。if not defined stackoverflow echo Not defined但未定义。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.