cmd中的系统环境变量

时间:2013-11-10 01:57:36

标签: windows batch-file windows-7 cmd windows-xp

我正在尝试使用命令行(cmd.exe)为特定用户配置文件创建环境变量。我知道setx命令但无法为用户创建变量。所以我的目标是创建一个用户特定的环境变量,旨在映射网络驱动器号“M:”。呢?

1 个答案:

答案 0 :(得分:1)

setx无法为其他用户创建环境变量(尽管它可以创建用户范围的变量),并且它会发送WM_SETTINGSCHANGE消息以通知正在运行的进程环境已经改变了。

用户范围的环境变量只是注册表值,存储在HKEY_CURRENT_USER\Environment下。您可以通过修改该键下的值/数据对为给定的配置文件创建一个。修改注册表不会像WM_SETTINGSCHANGE那样发送setx

用户个人资料存在

您可以通过加载注册表配置单元

为特定用户(其配置文件已存在)创建变量
reg load HKU\ForeignUser C:\Users\<userid>\NTUSER.DAT

(自Windows启动以来,用户无法登录或登录。NTUSER.DAT将在这种情况下被锁定。)

然后,您可以执行相对于该键(HKEY_CURRENT_USER\ForeignUser)的注册表修改命令来创建/修改环境变量。

reg add HKU\ForeignUser\Environment /v ENVVAR_NAME /t REG_SZ /d envvar_value

默认用户个人资料

如果用户从未登录过计算机,则修改默认用户配置文件将允许您为所有新用户配置文件预先创建环境。

您可以修改默认用户配置文件(HKEY_USERS\.Default\Environment)以配置环境变量。

reg add HKEY_USERS\.Default\Environment /v ENVVAR_NAME /t REG_EXPAND_SZ /d envvar_value

如果在_envvar_value_中包含%USERNAME%或其他一些环境变量,那么您可以使其适用于所有用户。 但是,这将为首次登录计算机的所有后续用户创建envvar。如果您只想为单个用户创建变量,这可能不是最佳解决方案。

全局脚本

或者,您可以使用HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run或注册表修改命令创建一个登录脚本(通过在setx; description下创建一个值来调用),该脚本将创建envvar。如果您只希望它适用于特定用户,则必须检查脚本中的用户名,例如:

IF "%USERNAME%"=="TARGET_USER" SETX ENVVAR_NAME "envvar_value"