删除环境变量不起作用

问题描述 投票:0回答:5

为什么在 Windows 7 Professional 中使用

reg delete HKCU\Environment /F /V TestVar
删除环境变量会将其从注册表中删除,但该变量仍然存在?

详细信息如下:我创建了以下 3 个

.cmd
文件:

检查变量.cmd

echo TestVar = %TestVar%
pause

设置变量.cmd

setx TestVar 123
pause

删除变量.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
    ,该变量不再存在

第2步后我可以在注册表中找到该值,第4步后我找不到它,但第5步仍然找到它。即使我不更改任何内容,第 6 步也会删除该变量。

windows cmd registry environment-variables
5个回答
5
投票

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

检查变量.cmd

set TestVar
@pause

设置变量.cmd

setx TestVar 123
@pause

删除变量.cmd

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

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

编辑

我添加了一行以从注册表中删除

DummyVarUsedToDelete
。这不会被广播,但这是一个临时的小问题。


1
投票

您可以使用

setx
删除环境变量,这将广播正确的消息:

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

(正如评论中所讨论的,单独使用

setx
会在注册表中留下一个空条目,为了保持一致性,应将其删除。)


0
投票

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

正如评论所说,资源管理器(或任何其他作用于消息的图形程序)如果从其他程序(如 setx)收到一条消息,警告它注册表已更改,则会重新读取注册表。

答案很简单

在连续的行上使用

set
setx


0
投票

删除系统路径变量

方法一:

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

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

这应该可以正常工作

方法三:

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

0
投票

您可以使用 SETX 和 REG DELETE 删除环境变量:

setx 测试变量“” reg 删除 HKCU\Environment /F /V TestVar

ECHO %TestVar%
SETX TestVar "" & REG DELETE HKCU\Environment /v TestVar
ECHO %TestVar%

然后打开一个新的命令窗口,如文档SETX中所述。当您想要使用 SETX 创建新环境变量时,这也适用。它说 “使用 setx 变量设置的变量仅在未来的命令窗口中可用,而在当前命令窗口中不可用。”

您可以查看注册表编辑器,环境变量TestVar已经被删除。所以我认为不需要重新启动Windows。

© www.soinside.com 2019 - 2024. All rights reserved.