删除系统路径变量

删除系统路径变量

我正在编写一个批处理文件,该文件应该自动设置计算机以接收“psexec”远程命令。不幸的是,我并没有真正注意我正在写的内容,我写了这个命令然后运行它:

setx /M Path "C:\Windows\System32\PSTools"

你可以想象发生了什么……我删除了所有其他路径变量!然后,我惊慌失措,误读了在线论坛,重启了电脑。我没有备份,没有保存点,显然也没有打开 cmd 或 powershell 会话。我的问题是:

  1. 是否还有办法恢复我丢失或永远消失的路径变量?
  2. 如果它们消失了,有什么办法可以让我“重写”它们或者只是获得丢失的列表吗?

我知道我的问题对于经验丰富的程序员来说会显得很愚蠢,对此我深表歉意,但实际上我开始这个项目时几乎对 bat、cmd 和其他东西没有任何技能...感谢所有能提供帮助的人<3


"C:\"更新:好的,我在一个名为的文件夹中找到了"Windows.old",其中是否可能仍存储着路径变量?此文件夹中的文件夹和文件大多相同,"C:\Windows"并且充满了“.mui”文件,但如果我执行“高级启动”,计算机会提示没有还原点。我该怎么办?

答案1

首先,系统路径环境变量存储在注册表中的以下位置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path

您可能有此值的备份

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment\Path

或 ControlSet002 或 ControlSet003,但很可能该值与 下的相同CurrentControlSet

Path值应该是类型REG_EXPAND_SZ,默认值如下:

 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;

如果您有其他值,它们将被附加到列表中,或者有时不幸地被添加到列表中。分号分隔每个条目。

许多软件(包括微软自己的一些软件)使用不正确的命令向该值添加新条目,最终得到REG_SZ如下类型的值:

C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;

虽然这在大多数情况下有效,但在其他情况下却不起作用。最好使用类型REG_EXPAND_SZ

使用该值更改后,regedit.exe您应该重新启动操作系统,特别是如果该值之前不正确。

相关内容