在Windows中永久更改环境variables

我find了一种方法来更改用户的默认主目录,但我遇到了麻烦。

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

这样做会将主驱动器更改为C:

但是当我检查环境variables时:

在这里输入图像说明

它仍然是H:,在系统重新启动时,Windows环境中的Enviromentvariables也将返回到H:/

我也试过这样改变它:

在这里输入图像说明

这似乎工作,但如果我打开一个新的CMD它将恢复到H:/

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

我可以做些什么来永久性地设置OpenSSH?

Solutions Collecting From Web of "在Windows中永久更改环境variables"

它没有提到HOMEDRIVE值和HOMEDIRECTORY值之间的依赖关系,发生了什么(我认为)是它无法将主目录映射到HOMEDRIVE,因此默认返回到安全值(C 🙂

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

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

例如

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

运行这个,重新启动并测试。 它为我工作。

听起来像域上的AD配置文件覆盖用户定义的变量。 我看到你的截图说明你连接到了eait.org.edu.au域名。 这将是你问题的根源。 只是在这里包括我在其他地方发现的一些细节,这可能对你有帮助:

HOMEDRIVE,HOMEPATH&HOMESHARE通过Active Directory进行设置和更新。 即使没有设置家庭硬盘,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。

更改那些环境变量的值不是“支持”,至少它不会像你期望的那样工作,因为Windows改变了它们。

根据此Microsoft知识库文章(KB841343) ,如果需要更改这些设置,则应使用策略。 文章还包含如何做到这一点(但个人,我从来没有尝试过)的链接。 请注意,这篇文章最初是为Windows 2000编写的,但我强烈怀疑它对于当前的Windows版本仍然有效。

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

我猜Windows没有改变这一点,CMD窗口可用的环境变量只有该窗口的范围和它产生的任何进一步的窗口。 这是由这个小实验支持的:

在CMD窗口类型中

 set homedrive=h:\ 

然后通过输入来测试它是否已更新

 set h 

从这个相同的窗口类型

 start cmd 

并在这个新的窗口类型

 set h 

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

如果我然后从开始菜单中打开一个新的CMD窗口,并执行相同的SET HI HOMEDRIVE = C:\

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

在Windows 8上:

  1. 打“windows键”。
  2. 键入“系统环境变量”。
  3. 允许“高级系统设置”进行更改。
  4. 选择“高级”选项卡。
  5. 点击“Enviroment Variables …”。
  6. 双击“用户变量XXXXXXXX”中的“路径”
  7. 在变量结尾添加你想用分号分隔的新路径。

    例如C:\ Program Files \; C:\ Python27 \ shareeditdelete(1)标志