删除环境变量不起作用

时间:2015-04-17 00:17:29

标签: windows cmd registry environment-variables

为什么在Windows 7 Professional中删除带有reg delete HKCU\Environment /F /V TestVar的环境变量会将其从注册表中删除,但变量仍然存在?

以下是详细信息:我创建了以下3个.cmd文件:

检查variable.cmd

echo TestVar = %TestVar%
pause

设置variable.cmd

setx TestVar 123
pause

删除variable.cmd

reg delete HKCU\Environment /F /V TestVar
pause

然后我按照这些步骤进行操作(双击以确保每次都开始一个新会话):

  1. 双击Check variable.cmd,我看到TestVar不存在
  2. 双击Set variable.cmd,然后显示SUCCESS: Specified value was saved.
  3. 双击Check variable.cmd,它会显示变量值。好!
  4. 双击Delete variable.cmd,然后显示The operation completed successfully.
  5. 双击Check variable.cmd,它仍显示变量值。糟糕!
  6. 点击“开始”菜单,点击environment,点击Edit environment variables for your account打开Environment Variables对话框,点击OK,不做任何改动
  7. 双击Check variable.cmd,该变量不再存在
  8. 我可以在第2步之后找到注册表中的值,我在步骤4之后找不到它,但第5步仍然找到它。即使我没有改变任何东西,第6步确实删除了变量。

4 个答案:

答案 0 :(得分:3)

这是我的问题的解决方案。我不知道这是否是正确的解决方案,但它对我有用:

检查variable.cmd

set TestVar
@pause

设置variable.cmd

setx TestVar 123
@pause

删除variable.cmd

reg delete HKCU\Environment /F /V TestVar
setx DummyVarUsedToDelete ""
reg delete HKCU\Environment /F /V DummyVarUsedToDelete
@pause

setx不能用于删除变量,如here所述,但在使用reg delete从注册表中删除变量后,它会丢失广播。

修改

我添加了一行来从注册表中删除DummyVarUsedToDelete。这不会被广播,但这是一个小小的临时问题。

答案 1 :(得分:1)

您可以使用setx删除环境变量,这将广播正确的消息:

setx TestVar ""
reg delete HKCU\Environment /F /V TestVar

(正如评论中所讨论的,使用setx本身会在注册表中留下一个空条目,为了保持一致,应该删除它。)

答案 2 :(得分:0)

在启动时读取注册表。当程序启动时,它会获得它的父级环境的副本,通常是Explorer.exe的环境。

正如评论所说,探险家(或任何其他作用于该消息的图形程序)如果从某个其他程序(如setx)收到消息,警告注册表已更改,则重新读取注册表。

答案很简单

在顺序线上使用setsetx

答案 3 :(得分:0)

删除系统路径变量

方法1:

set var = C:\Users\mahidhai\cygwin64\usr\local\bin
REG delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V var

就我而言,即使我以管理员身份运行也不起作用。 命令提示符显示未找到错误注册表项

在这种情况下,直接转到注册表项文件

方法2:

Go To register editor .
Run -> regedit
NAvigate to 
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

通过单击注册密钥名称直接编辑注册密钥。

这应该很好

方法3:

Sometimes not updated windows could be the issue . Check if any updates  available . If so update immediately