卸载Anaconda后,命令提示符窗口崩溃并显示退出码1

71

问题描述

我在我的Win10专业版机器上遇到了这个问题。我卸载了Anaconda,因为它在Jupyter笔记本上给我带来了问题,然后重新安装了它。但从那以后我就无法访问命令提示符。

只要我打开它,它就会关闭。我通过打开VSCode并阅读Cmd has exited with error code 1解决了这个问题。现在,Anaconda Prompt也无法启动,但是当我打开PowerShell时,它会显示(conda),所以我认为可以从那里工作。

Powershell和cmd / d

在Powershell中,如果我输入cmd,它会立即退出而不抱怨任何事情。但是如果我输入cmd /d,它就能正常工作。

尝试过的修复方法

  • 从路径中删除Anaconda
  • 我在这里某个地方看到过可能是由于cmd启动时出现了某种错误命令导致的,实际上用cmd /d就像通常一样工作。
  • 我试图按照注册表修复有关cmd启动命令的内容,但在我的情况下,注册表条目已丢失也许这就是问题所在
  • sfc /scannowDISM.exe /Online /Cleanup-image /Scanhealth都没有起作用。

我在网上找到的信息

根据这个网站,ErrorCode 1表示“指示操作已尝试在Windows命令提示符cmd.exe中执行未识别的命令”。

实际请求

请问有没有人能帮我解决这个问题?我已经在网上找了一个星期了,但没有任何进展。谢谢你们抽出时间来看一下。


6
谢谢你, @Mofi!C:\Windows\System32\reg.exe DELETE "HKCU\Software\Microsoft\Command Processor" /v AutoRun /f 命令确实起作用了,但我不能将你的回答标记为正确答案,因为它是一条评论。如果你想将其复制粘贴为答案,我会将其标记为已完成。 - Filippo Vicari
非常感谢您的一切!我非常感激。我一定会按照您说的去做,再次感谢。 - Filippo Vicari
谢谢,我遇到了完全相同的问题,但是对我来说,这是在卸载并重新安装Miniforge时发生的。在找到您的帖子之前,我已经苦苦思索了几个小时。很遗憾,@Mofi的评论被删除了,从未发布为答案;我很想了解“为什么”和“如何”。 - F. Remonato
7个回答

193

以下答案最初(据说)由@Mofi发布(但后来被删除),我从@filippo-vicari的评论中获得了它。因此,所有功劳归于他们,感谢解决这个问题!我花了几个小时才最终找到他们的解决方案。

在仍在运行的powershell(在我的情况下是Anaconda Powershell)中输入以下命令:

C:\Windows\System32\reg.exe DELETE "HKCU\Software\Microsoft\Command Processor" /v AutoRun /f

它对我立即起作用。 cmd.exe和Anaconda提示现在再次完美地工作!


我认为在运行 conda init 后,“AutoRun”键会被添加到注册表中。 - blaylockbk
1
只是在这里留个评论,因为我从另一个问题转到这里,npm无法工作(根本没有输出任何内容或执行任何操作),结果发现是由于cmd崩溃导致它无法正确工作。所以如果有人遇到相同的npm问题,请尝试一下! - Erdorath
根据 cmd.exe 文档:"如果在命令行中没有指定 /D,则当 CMD.EXE 启动时,它会查找以下 REG_SZ/REG_EXPAND_SZ 注册表变量,如果其中任何一个或两个都存在,则首先执行它们。HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun和/或HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun默认情况下启用命令扩展。"我的 HKLM 注册表值也有一个空的 "if exists" 语句,需要重置为空字符串。 - PetMetz
1
这里还有一个额外的提示,如果你在一个需要管理员权限才能运行 regedit 并查找 HKCU 下键值的公司环境中,请记住这不是你常规用户的注册表。在我意识到我只需要在 HKEY_USERS 下搜索之前,这花费了我相当多的时间。此外,如果你已经卸载/重新安装了 Anaconda,你需要修复该值而不是删除它,正确的值应该类似于 if exist "C:\Anaconda3\condabin\conda_hook.bat" "C:\Anaconda3\condabin\conda_hook.bat" - Mike Nunan
1
@MikeNunan 我相信你也可以直接删除注册表值,然后从Anaconda提示符中运行conda init来恢复正确的值。这样做的小优势是它应该自动使用Anaconda安装的文件夹,可能不是"C:\Anaconda3"。 - Tim Goodman
非常感谢!我对这个问题感到非常沮丧。使用你的解决方案后,问题立即得到了解决! - Shariq farooq

24

在完全卸载anaconda后(未重新安装),我遇到了相同的问题。通过进入注册表编辑器中的“计算机\HKEY_CURRENT_USER\Software\Microsoft\Command Processor”并删除AutoRun键,我成功解决了这个问题。


1

如果有人(比如我)遇到了类似“Code: 1”的问题,且命令提示符显示“cmd.exe不是一个命令”,只需将C:\Windows\system32添加到PATH中。


system__环境变量Path中的第一个目录路径默认为Windows的%SystemRoot%\System32。如果__system Path不再包含此目录路径,且无法通过引用环境变量SystemRoot的值来恢复,则可以预期必须根据已安装的应用程序和使用的Windows版本手动重建__system__和__user__环境变量Path - Mofi

1

Mike Nunan的评论对我很有帮助。将其添加为答案,以便其他可能错过Mike的评论的人也能看到。

如果您在公司环境中,则活动用户的AutoRun可能不在HKCU\Software\Microsoft\Command Processor中,而在HKEY_USERS中。

我的错误:由于anaconda卸载(卸载时出现错误),命令提示符会立即打开并关闭。

诊断:按WIN+R,键入“cmd”。这应该会异常地立即打开并关闭。如果‘cmd /d’正常打开,则使用下面的修复方法。

修复:在注册表编辑器中使用管理员权限,搜索(CTRL + F)“命令处理器”键。在HKEY_USERS中,类似于HKEY_USERS/**随机数字**/SOFTWARE/Microsoft/Command Processor的内容将显示出来,请删除“AutoRun”条目。重复所有与所有不同用户(随机数字)相关联的Command Processor键。重新启动计算机以使注册表修改生效。根据Mike Nunan的评论,如果您仍然安装了Anaconda,则也可以编辑值而不是删除AutoRun - 只需确保知道Anaconda安装在哪里即可。 例如:字符串类型的Autorun值的数据可能为if exist "C:\Anaconda3\condabin\conda_hook.bat"if exist "C:\ProgramData\anaconda3\condabin\conda_hook.bat"等。检查您的安装!


1

这个答案对我解决了问题。

打开注册表键计算机\HKEY_CURRENT_USER\Software\Microsoft\Command Processor并删除值AutoRun

AutoRun值可能会运行与Anaconda相关的自定义命令或脚本。因为Anaconda已经被卸载,脚本不再存在,而在崩溃CMD时失败。


我只是留下这个答案,附带一些额外的提示、短语和错误信息(用于SEO),以便其他人可以通过谷歌找到这个答案:
我遇到了与提问者完全相同的问题,并且首先注意到这个问题是因为在卸载Anaconda后,npm不再工作。 在PowerShell中输入node -v会显示node版本,但npm -v没有任何输出(也没有错误)。
我重新安装了node.js,并且PATH变量已正确配置。 但在C:\Program Files\nodejs目录下打开一个Powershell窗口并运行.\npm.cmd -v或.\npm -v都没有任何输出(也没有错误)。
PS C:\Program Files\nodejs> .\npm.cmd -v
PS C:\Program Files\nodejs>

我仍然可以通过git bash安装直接运行bash脚本。
& "C:\Program Files\Git\bin\bash.exe" .\hello.sh
Hello World

在Powershell窗口中运行cmd只会打印Windows版本,而不会切换窗口到CMD提示符:

PS C:\Users\USERNAME> cmd
Microsoft Windows [Version 10.0.19045.3208]
(c) Microsoft Corporation. All rights reserved.
PS C:\Users\USERNAME>

打开VS Code终端中的CMD时,我遇到了这个错误:
The terminal process "C:\Windows\System32\cmd.exe" terminated with exit code: 1.

在 Windows 终端中启动新的 CMD 命令提示符时出现了以下错误:
[process exited with code 1]

Windows终端错误实际上是德语,更确切地说: [Verarbeitung des Prozesses mit Code 1 (0x00000001) beendet] 您可以使用CTRL+D关闭此终端或按Enter键重新启动。 - Tobi Obeck
这就是解决方法,我知道肯定是某个配置问题,我的CMD一直在尝试加载mscoree.dll但失败了,我当时就想,这是怎么回事...。 - undefined

-2

这不仅是 HKCU 的位置。这些也应该被删除:

HKLM\Software\Microsoft\Command Processor

1
整个注册表键 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor 不应被删除,只有在该键下存在的注册表值 AutoRun 应被删除。通常情况下,在该键下添加注册表值 AutoRun 需要本地管理员的提升权限,同样需要使用 %SystemRoot%\System32\reg.exe DELETE "HKLM\Software\Microsoft\Command Processor" /v AutoRun /f 命令进行删除。 - Mofi

-2

将以下值添加到系统变量Path中:

 C:\Windows\system32 

system__环境变量Path中的第一个目录路径默认为Windows的%SystemRoot%\System32。如果__system Path不再包含此目录路径,且无法通过引用环境变量SystemRoot的值来恢复,则可以预期必须根据已安装的应用程序和使用的Windows版本手动重建__system__和__user__环境变量Path - Mofi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接