我找到了一种方法来更改用户的默认主目录,但我遇到了问题。
执行此操作会将主驱动器更改为C:
但是当我检查环境变量时:
它仍然是H :,系统重启后,Windows设置中的Enviroment变量也将返回H:/
我也试过改变它:
这似乎有效,但如果我打开一个新cmd,它将恢复为H:/
现在我正在尝试这样做,以便OpenSSH将C识别为我的主目录而不是H:这是一个网络驱动器,迫使OpenSSH无法工作,除非我通过VPN连接到我的大学网络。
在OpenSSH中,我该如何永久地设置它?
答案 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上:
在变量末尾添加您希望用分号分隔的新路径。
e.g。 C:\ Program Files \; C:\ Python27 \ shareeditdelete(1)flag