我正在编写一个批处理文件,该文件应该自动设置计算机以接收“psexec”远程命令。不幸的是,我并没有真正注意我正在写的内容,我写了这个命令然后运行它:
setx /M Path "C:\Windows\System32\PSTools"
你可以想象发生了什么……我删除了所有其他路径变量!然后,我惊慌失措,误读了在线论坛,重启了电脑。我没有备份,没有保存点,显然也没有打开 cmd 或 powershell 会话。我的问题是:
- 是否还有办法恢复我丢失或永远消失的路径变量?
- 如果它们消失了,有什么办法可以让我“重写”它们或者只是获得丢失的列表吗?
我知道我的问题对于经验丰富的程序员来说会显得很愚蠢,对此我深表歉意,但实际上我开始这个项目时几乎对 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
您应该重新启动操作系统,特别是如果该值之前不正确。