为什么在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
然后我按照这些步骤进行操作(双击以确保每次都开始一个新会话):
Check variable.cmd
,我看到TestVar
不存在Set variable.cmd
,然后显示SUCCESS: Specified value was saved.
Check variable.cmd
,它会显示变量值。好!Delete variable.cmd
,然后显示The operation completed successfully.
Check variable.cmd
,它仍显示变量值。糟糕!environment
,点击Edit environment variables for your account
打开Environment Variables
对话框,点击OK
,不做任何改动Check variable.cmd
,该变量不再存在我可以在第2步之后找到注册表中的值,我在步骤4之后找不到它,但第5步仍然找到它。即使我没有改变任何东西,第6步确实删除了变量。
答案 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)收到消息,警告注册表已更改,则重新读取注册表。
答案很简单
在顺序线上使用set
和setx
。
答案 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