21

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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

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

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

在此处输入图像描述

还是H:,系统重启后windows设置里的Enviroment变量也会回到H:/

我也试过这样改变它:

在此处输入图像描述

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

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

在 OpenSSH 的眼中,我能做些什么来永久设置它?

4

7 回答 7

12

它没有提到 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

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

于 2012-08-21T23:20:01.513 回答
7

听起来域上的 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。

于 2012-08-23T14:35:30.640 回答
2

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

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

于 2012-08-13T04:19:29.480 回答
0

早在 DOS 时代,环境变量是程序段的一部分,这意味着您基本上可以在本地快照商店中获取仅限于该程序范围的变量。

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

在 CMD 窗口类型中

set homedrive=h:\

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

set h

从同一个窗口类型

start cmd

在这个新的窗口类型中

set h

完成此操作后,我得到 HOMEDRIVE=H:\

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

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

于 2012-08-21T21:31:03.203 回答
0

我有一个类似的问题, HOMEDRIVE 变量设置为 U: 这是我们不再使用的驱动器。这仅适用于一个特定用户。我在 AD 中访问了该用户的个人资料并单击了属性编辑器选项卡。HOMEDRIVE 有一个属性,我将其从 U: 更改为 C: - 当用户再次登录时,它设置正确。我还在这里更新了 HomeDirectory 属性。

于 2021-09-16T22:22:09.070 回答
-1

这个问题让我在试图找到解决方案时感到非常沮丧,但我找到了我认为是明确的答案并将其发布在:

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

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

于 2020-02-23T07:48:14.170 回答
-3

在 Windows 8 上:

  1. 点击“Windows 键”。
  2. 键入“系统环境变量”。
  3. 允许“高级系统设置”进行更改。
  4. 选择“高级”选项卡。
  5. 单击“环境变量...”。
  6. 双击“XXXXXXXXX的用户变量”中的“路径”
  7. 在变量末尾添加您想要用分号分隔的新路径。

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

于 2016-12-27T17:47:48.330 回答