为什么用reg delete HKCUEnvironment /F /V Testvar一个环境variablesreg delete HKCUEnvironment /F /V Testvar Windows 7 Professional中的reg delete HKCUEnvironment /F /V Testvar将其从registry中删除,但该variables仍然存在?
以下是详细信息:我创build了以下3个.cmd文件:
检查variable.cmd
echo Testvar = %Testvar% pause
设置variable.cmd
需要linux相当于windows“echo%date%%time%%COmpuTERNAME%”
从Windows命令行回显一个variables的长度
在Ruby中的Windows命令中设置本地ENVvariables
gnuplot在一个文件的path中有一个variables
从Java调用的Setx不能正确工作
setx Testvar 123 pause
删除variable.cmd
reg delete HKCUEnvironment /F /V Testvar pause
然后我按照这些步骤(双击,以确保我每次开始一个新的会话):
双击Check variable.cmd ,我看到Testvar不存在
双击Set variable.cmd ,它会显示SUCCESS: Specified value was saved.
双击Check variable.cmd并显示variables值。 好!
双击Delete variable.cmd ,它说The operation completed successfully.
双击Check variable.cmd ,它仍然显示variables值。 坏!
点击开始菜单,inputenvironment ,点击Edit environment variables for your account的Environment Variables ,打开Environment Variables对话框,点击OK不用改变任何东西
双击Check variable.cmd ,variables不再存在
我可以在步骤2后findregistry中的值,在步骤4后找不到它,但步骤5仍然可以find它。 即使我什么也没有改变,第6步真的删除了variables。
在批处理中显示variables
shell和环境variables之间的区别
我可以更改单个窗口的PATHvariables吗?
使用env在bash中设置一个程序调用的环境variables
草莓的Perl:忘记环境variables?
这是解决我的问题。 我不知道这是否是正确的解决方案,但它适用于我:
检查variable.cmd
set Testvar @pause
设置variable.cmd
setx Testvar 123 @pause
删除variable.cmd
reg delete HKCUEnvironment /F /V Testvar setx DummyVarUsedToDelete "" reg delete HKCUEnvironment /F /V DummyVarUsedToDelete @pause
setx不能用来删除一个变量,就像这里所说的那样,但是在用reg delete从注册表中reg delete一个变量之后,它就会丢失广播。
编辑
我添加了一行来从注册表中删除DummyVarUsedToDelete 。 这不会被播放,但这是一个小的暂时的问题。
setx Testvar "" reg delete HKCUEnvironment /F /V Testvar
(正如在注释中所讨论的那样,使用setx本身会在注册表中留下一个空的条目,为了保持一致性,应该删除它。)
在启动时读取注册表。 当一个程序启动时,它会得到一个父级环境的副本,通常是Explorer.exe的环境。
正如评论所说,资源管理器(或任何其他图形程序,作用于消息),如果它从其他程序(如setx)得到一个消息,警告它注册表已被更改,重新读取注册表。
答案很简单
在顺序行上使用set和setx 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。