我的雇主有一个 Active Directory 组策略,将我的 Windows 7 笔记本电脑 HOMEDRIVE 设置为“M:”(映射网络驱动器),将我的 HOMEPATH 设置为“\”。由于我对该共享驱动器的根目录具有只读权限,因此我无法在 Windows 主目录中创建文件或目录。我尝试与 IT 部门合作,但未成功。
有没有办法我到全球在启动或登录时更改这些 envar?我需要全部应用程序使用替代值(例如“C:”和“\Users\myname”)。我安装了一些实用程序(例如 gvim 等),它们将首选项文件存储在用户的主目录中。
重要的:在“系统属性 > 环境变量”下更改这些环境变量不起作用。我尝试过将这些设置为用户和系统变量(包括重新启动)。SET HOME
在 DOS 窗口中键入时,我的设置显然被忽略了。此外,在 Windows 快捷方式中使用“开始”也会不是解决这个问题,因为我需要像资源管理器上下文菜单项(比如“用 Vim 编辑”)这样的东西才能正确运行。
我确实拥有这台公司笔记本电脑的管理员权限,但我不是 Win7 专家。以前,启动脚本可以在一分钟内解决这个问题。现在还能解决吗?谢谢。
答案1
以下是我开发的一些技巧。它们并不优雅,但可能在您的公司环境中有用。
仅限 HOMEDRIVE
似乎许多应用程序仅使用 HOMEDRIVE / HOMEPATH。在这种情况下,您可以创建一个启动脚本,通过 UNC 驱动器管理路径将基本驱动器号重新映射到本地用户路径:
set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Server\Users\username
net use g: /delete
net use g: \\localhost\C$\Users\username
HOMEDRIVE 本地默认
如果您根本不需要通过名称访问“服务器”,则可能导致组策略设置失败并返回到本地计算机。最简单的方法是将条目添加到C:\Windows\System32\drivers\etc\hosts喜欢:
127.0.0.1 Server
重新启动后,你应该会看到类似这样的内容:
set HOME
HOMEDRIVE=C:
HOMEPATH=\Users\username
具有混合本地/远程 UNC 路径的 HOMEDRIVE/SHARE
如果您希望通过名称访问某些 UNC 路径的“服务器”,但使用本地路径覆盖其他路径,我开发了以下令人厌恶的方法。注意:与“服务器”的直接服务器连接仍将解析到您的本地计算机。我仅当“服务器”只是文件服务器时才推荐此解决方案:
调整C:\Windows\System32\drivers\etc\hosts将“服务器”重定向到本地机器:
127.0.0.1 Server
添加以下内容多字符串注册表值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0允许将凭据传递到本地 UNC 路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ BackConnectionHostNames = Server
创建一个虚拟目录作为服务器的根目录:
set DUMMY_LOC=C:\Server_Dummy mkdir %DUMMY_LOC% cd /D %DUMMY_LOC%
对于您想要指向真实服务器的每个 UNC 路径:
rem Alternatively you can use an IP below, but it is more likely to break if DNS changes set SERVER_FQDN=Server.network.blah.com rem Take a look at what's available... net view \\%SERVER_FQDN%\ mklink /D Remote_Example \\%SERVER_FQDN%\Remote_Example net share Remote_Example=%DUMMY_LOC%\Remote_Example /grant:everyone,FULL
对于您想要本地定义的每个 UNC 共享(例如用户):
rem The link isn't really necessary for the share, I just find it easier to manage when all of these hacks are in the same directory mklink /D Users C:\Users net share Users=%DUMMY_LOC%\Users /grant:everyone,FULL
重启
举例来说,这将允许解析以下 UNC 路径:
\\Server\Remote_Example => \\Server.network.blah.com\Remote_Example
\\Server\Users => C:\Users
此路径解析应在驱动器映射之前进行。只要与映射关联的 UNC 路径有效(无论是本地路径还是远程路径),驱动器号就应按预期运行。
例如,在我的设置中,以下变量由域强制执行:
set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Server\Users\username
但由于我的映射,结果是:
G: => \\Server\Users\username => C:\Users\username
答案2
我发现的最佳解决方案是在登录期间和之前设置变量userinit.exe
。
这是我做的。首先创建一个批处理文件,其中C:\Windows\System32\userinit.cmd
包含
@ECHO OFF
SET HOMEDRIVE=C:
SET HOMEPATH=\Users\%USERNAME%
SET HOMESHARE=\\localhost\C$\Users\%USERNAME%
@START C:\Windows\system32\userinit.exe
然后在注册表中将值更改HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
为。C:\Windows\System32\userinit.cmd
更多信息请访问:https://technet.microsoft.com/en-us/library/cc939862.aspx
答案3
我SETX
在启动脚本中使用了它,它对我有用。请参阅我的回答。
答案4
我发布此帖是为了防止其他人通过 Google 遇到此问题。我没有更改我的主目录并让 IS 人员对我发火,而是在虚拟机上设置并运行我的开发。Microsoft 以虚拟模式提供 Widows XP。http://www.microsoft.com/windows/virtual-pc/download.aspx