永久更改Windows中的环境变量

时间:2012-08-13 04:06:26

标签: windows cmd environment-variables

我找到了一种方法来更改用户的默认主目录,但我遇到了问题。

enter image description here

enter image description here

enter image description here

执行此操作会将主驱动器更改为C:

但是当我检查环境变量时:

enter image description here

它仍然是H :,系统重启后,Windows设置中的Enviroment变量也将返回H:/

我也试过改变它:

enter image description here

这似乎有效,但如果我打开一个新cmd,它将恢复为H:/

现在我正在尝试这样做,以便OpenSSH将C识别为我的主目录而不是H:这是一个网络驱动器,迫使OpenSSH无法工作,除非我通过VPN连接到我的大学网络。

在OpenSSH中,我该如何永久地设置它?

6 个答案:

答案 0 :(得分:11)

它没有提到HOMEDRIVE值和HOMEDIRECTORY值之间的依赖关系,发生的事情(我认为)是它未能将主目录映射到HOMEDRIVE,因此默认返回到安全值(C :)

我写了一个脚本来更新本地AD,用你的值替换[]中的值。复制并粘贴到.vbs文件中,然后双击它以运行它。

Set objUser = GetObject("WinNT://[COMPUTERNAME]/[USERNAME],user")
objUser.homeDirDrive = "H:"
objUser.HomeDirectory = "[URNPATH]"
objUser.SetInfo

e.g。

Set objUser = GetObject("WinNT://UQBDART-2328/BEN,user")
objUser.homeDirDrive = "H:"
objUser.HomeDirectory = "\\SERVER\SHARE"
objUser.SetInfo

运行它,重启并测试。它对我有用。

答案 1 :(得分:5)

听起来域上的AD配置文件正在覆盖用户定义的变量。我看到您的屏幕截图显示您已连接到eait.org.edu.au域。那将是你问题的根源。只是在这里包含我在其他地方发现的一些细节,这可能对你有所帮助:

HOMEDRIVE,HOMEPATH&通过Active Directory设置和更新HOMESHARE。 HOMEDRIVE&即使没有在帐户上设置家庭驱动器,也可以设置HOMEPATH;但是,它们将被AD中设置的任何用户帐户属性覆盖。

另见知识库文章:

http://support.microsoft.com/kb/841343
http://support.microsoft.com/kb/237566
http://support.microsoft.com/kb/101507 

关于问题的另一种解决方法:

- 我过去创建了一个自动运行自定义脚本的Windows命令行shell可执行文件的新实例,因此每次启动shell时,都可以覆盖环境变量。

- 要做到这一点,您可以将您发布的代码更改为环境变量,将其更改为批处理脚本,存储在您喜欢的任何位置,然后通过转到属性>编辑用于启动shell的快捷方式。然后更改目标框:%SystemRoot%\ system32 \ cmd.exe / K“C:\ Documents and Settings \ Administrator \ My Documents \ customshellscript.cmd”(显然,/ K之后的路径部分是您自定义的位置脚本)

这样,如果您在控制台上使用openSSH,它将始终正确设置homedrive。

答案 2 :(得分:2)

不支持更改这些环境变量的值,至少它不会像您期望的那样工作,因为Windows会将它们更改回来。

根据此Microsoft knowledge base article (KB841343),如果您需要更改这些设置,则应使用策略。该文章还包含如何做到这一点的链接(但个人而言,我从未尝试过)。请注意,该文章最初是为Windows 2000编写的,但我强烈怀疑,它仍适用于当前的Windows版本。

答案 3 :(得分:1)

回到DOS的时代,环境变量是Program Segement的一部分,这意味着你基本上得到了一个限制在该程序范围内的变量的本地snapshop。

我猜测Windows没有改变这一点,CMD窗口可用的环境变量只有该窗口的范围以及它产生的任何其他窗口。这个小实验支持这一点:

在CMD窗口中输入

set homedrive=h:\

然后输入

进行测试
set h

来自同一窗口类型

start cmd

并在此新窗口中输入

set h

当我这样做时,我得到HOMEDRIVE = H:\

如果我只是从开始菜单打开一个新的CMD窗口并执行相同的SET H我得到HOMEDRIVE = C:\

我对OpenSSH一无所知,但我怀疑START CMD获得了更新的HOMEDRIVE环境变量,如果你编写一个批处理来更新环境变量,然后执行OpenSSH就行了。

答案 4 :(得分:-1)

这个问题确实让我试图寻找解决方案感到沮丧,但是我已经找到了我认为是确定的答案,并将其发布在:

https://stackoverflow.com/a/60235759/12903197

您需要运行'net user USERNAME / homedir:PATH',其中USERNAME是您要更改的用户名,PATH是驱动器号和所需主文件夹的完整路径,该目录必须已经存在。 / p>

答案 5 :(得分:-3)

在Windows 8上:

  1. 点击“Windows键”。
  2. 输入“系统环境变量”。
  3. 允许“高级系统设置”进行更改。
  4. 选择“高级”标签。
  5. 点击“Enviroment Variables ...”。
  6. 双击“XXXXXXXX的用户变量”
  7. 中的“路径”
  8. 在变量末尾添加您希望用分号分隔的新路径。

    e.g。 C:\ Program Files \; C:\ Python27 \ shareeditdelete(1)flag