news 2026/9/25 1:25:07

Keil5彻底卸载与残留清理全指南:注册表、Pack包、环境变量一步不落

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Keil5彻底卸载与残留清理全指南:注册表、Pack包、环境变量一步不落

卸载Keil5这件事,说难不难,说简单也绝不简单。我见过太多人删到一半卡住,或者删完之后C盘空间一点没释放,更常见的是重装时各种报错——“No Valid License”“Pack Installer打不开”“UV4.exe找不到”,十有八九都是上一次没删干净埋下的雷。这篇东西就是来讲清楚:Keil5到底把东西装在了哪些角落,正规卸载走什么流程,残留文件怎么清,遇到删不掉的进程怎么办,以及重装前哪些细节必须处理妥当。无论你是单片机入门玩家、嵌入式从业者,还是单纯被占满的C盘逼疯的普通用户,下面这套流程都适用。

1. 先说清楚:为什么Keil5这么难删干净

1.1 Keil5的组件分散在哪些地方

一个很反直觉的事实是:Keil5“安装”这个动作,远不只是往C盘里丢几个文件夹那么简单。它是典型的IDE加工具链加生态体系,安装时会同时写入注册表、环境变量、系统服务、驱动、Pack包缓存,甚至开始菜单和文件关联。

如果你装了MDK-ARM,那么默认情况下至少有这些落点:

  • 程序主目录:通常为C:\Keil_v5,里面包含UV4、ARM、ARMCC、CMSIS等子目录。
  • 器件支持包(Pack):默认下载到C:\Users\你的用户名\AppData\Local\Arm\Packs,新版本MDK尤其如此,旧版则可能在C:\Keil_v5\ARM\PACK。
  • 配置文件:C:\Keil_v5\TOOLS.INI,记录了已安装的工具链、许可证信息、Pack路径等。
  • 注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Keil、HKEY_CURRENT_USER\Software\Keil,还有64位系统上的HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Keil。
  • 环境变量:常见的有ARMCC、ARM_ROOT,以及PATH里追加的C:\Keil_v5\ARM\BIN等。
  • 调试器驱动:ULINK、CMSIS-DAP、ST-Link等驱动程序,会注册到设备管理器。

这还没算你手动把工程文件丢在了安装目录里这种情况。所以你看,普通卸载工具只能触发uninstall.exe,把这个明面上的主目录和部分注册表移除,其他散落各处的东西根本没动。这就是很多人删完之后,在“应用和功能”里看不到了,但搜索Keil还能搜出一堆文件的根本原因。

1.2 直接删文件夹会导致什么问题

有人图省事,直接Shift+Delete删除C:\Keil_v5,觉得“文件夹都没了还能有啥”。这个操作短期内看起来有效,实际上后患无穷。

注册表里残留了大量键值,Windows仍然认为Keil已经安装,之后的重新安装往往会被判定为“已有更高版本”,或者License写入时报错。TOOLS.INI没删的话,uv4.exe仍然尝试按旧路径找工具链,找不到就报“Tool not found”。Pack目录不清理的话,C盘的几十GB空间继续被占用——实际上Keil卸载后最占空间的往往就是Pack,而不是程序本身。

更麻烦的是,如果你直接删了文件夹再卸载,卸载程序自己都会因为找不到文件而报错、中途退出,留下更混乱的注册表状态。我不建议跳过卸载程序直接删,这在所有Windows软件里都算是最不推荐的做法。正规顺序应该是:卸载程序先走一遍,然后手动清残留,最后重启。

2. 删除前的准备工作

2.1 备份你的工程和源码

这是我在处理类似问题时反复强调的第一项,优先级高到没朋友。

你得先理清楚:你的工程到底放在哪里?如果是默认工程目录、或者桌面、或者D盘,那还好;但确实有很多人把工程直接建在C:\Keil_v5\xxx\下面,有些教学视频也习惯把工程存到Keil安装目录里。如果你要彻底删除Keil5,这些工程将随安装目录一起被清掉,再也找不回来了。

所以第一步,请打开Keil的Project菜单,确认最近打开过的工程列表,把所有正在进行的项目复制到安全的地方,比如D盘或者网盘里。另外还有一类容易被忽略的文件:你在“魔术棒(Options for Target)”里修改过的分散加载文件(.sct)、启动文件、自定义链接脚本,尤其是你花时间调过的配置,别一并丢了。正确做法是把整个工程文件夹复制走,而不是只复制.uvprojx主文件。

2.2 记录License信息

很多人删完Keil5要重装,结果卡在激活这一步。这多半不是新装的Keil有问题,而是旧License信息没有正确清除,或者你根本没记录原来那台机器上的CID。

Keil的License机制是绑定计算机的,每台机器的CID不同,License文件也是按CID生成的。卸载前,打开Keil->License Management,把当前显示的License号和CID截图保存。这样万一你之后想在同一台机器上重装并重新激活,可以依靠这段记录向渠道商或者厂商客服申请,省去“License无效”的扯皮时间。

如果你用的是注册机生成的授权,那这一步更加有必要——注册机生成的License往往和当时的CID严格对应,重装后CID如果变化(比如换了网卡),照样无效。不记录的话,你就是重新跑一遍破解流程,也得输入正确的CID。

2.3 退出相关进程和服务

卸载之前如果不退出Keil相关进程,卸载程序会告诉你“文件正在使用,无法删除”,或者删到一半卡住。比较典型的进程是UV4.exe,也就是Keil的IDE主程序。有时候你明明关了窗口,它还在后台驻留,可以通过任务管理器确认并结束。

另外还有一个容易忽略的:某些J-Link、ST-Link驱动的后台服务,例如JLink.exe、ST-LINK_SERVER.exe,它们会占用动态库文件,导致卸载后残留。我遇到过几次,UV4.exe退干净了,结果JLink进程占用ARM/JLinkARM.dll,卸载的时候一直提示文件被占用,最后只能重启后在安全模式下清理。所以卸载前,把这些调试器相关的后台进程也一并检查、结束掉,能省掉很多麻烦。

3. 标准卸载流程:先走正规路径

3.1 从控制面板或系统设置里卸载

正确做法是在Windows的“设置”->“应用”->“已安装的应用”里搜索“Keil”或“MDK”,找到对应条目并点击卸载。Win10和Win11的入口略有区别,但基本逻辑一致。控制面板里的“程序和功能”同样可以,甚至更直观,能看到完整的软件名称和版本号。

这里要提醒一句:Keil5并不是只有一个名字。如果你装过C51和MDK两个版本,它们分别显示为“Keil C51”和“Keil MDK-ARM”之类,两部分都要卸载。如果只装了其中一个,名字可能是“MDK-ARM Version 5.x.x”之类的格式,注意别认错。卸载时,安装包偶尔会弹出“是否保留配置文件”之类的询问,需要具体情况具体对待,这部分放到3.2里细讲。

3.2 卸载时“是否保留配置”怎么选

卸载程序在执行过程中,可能会弹出类似“Do you want to keep the configuration and Pack files?”的选项。很多人卡在这,不知道选是还是否。

如果你只是临时卸载重装,想保留之前下载的Pack包(省得重新下载几十GB的器件包),那么可以选择保留。这样Pack缓存和配置文件会原样留着,重装之后Pack Installer直接识别已有缓存,不用重新联网下载。注意是“临时重装”的前提下。

如果你是为了彻底清空、解决顽固问题、释放磁盘空间,那就别犹豫,选“不保留”。这个不保留会同时清理Pack包和TOOLS.INI等配置文件。但要注意,它并不会清理注册表里的所有键值,也不会清理环境变量——这些仍然需要手动处理,所以卸载完还要继续按下面的步骤操作。

3.3 卸载完成后检查遗留文件夹

卸载程序跑完,并不代表万事大吉。先别急着重装,检查一下这些常见路径是否还存在:

  • C:\Keil_v5(安装目录)
  • C:\Users\你的用户名\AppData\Local\Arm(新版MDK的Arm缓存)
  • C:\Users\你的用户名\AppData\Roaming\Keil(部分配置和许可证信息)
  • C:\Users\Public\Documents\Keil_v5(旧版公共文档路径)

如果以上目录依然存在,说明卸载程序确实留下了大量残留。不需要在这个时候慌,接下来的深度清理就是专门解决这个的。

4. 深度清理:把残留文件一个个揪出来

4.1 清理安装目录和配置残留

卸载结束后,C:\Keil_v5很可能还在。这个目录里除了程序文件,还可能有你自己放的工程文件,但前面已经备份过了,所以现在可以放心删除。

如果删除时报“文件被占用”,回到任务管理器结束UV4.exe、JLink等进程;还不行就重启再删。另外一个我很推荐的小技巧是:在删除之前,先把“隐藏的项目”显示开关打开——文件资源管理器->查看->勾选“隐藏的项目”,否则一些受保护的系统文件可能看不见,你以为删干净了实际上还在。

删除C:\Keil_v5之后,继续检查C:\Keil_v5目录下是不是自己建过其他子目录,如果整个文件夹都没了,就无需再处理。重点检查TOOLS.INI广为人知的残留——它虽然写在安装目录下,但很多人手动删除卸载程序时,会漏掉这个文件,导致重装后软件仍然按旧配置去找工具链。

4.2 清理AppData中的Pack包和缓存

Pack包,也就是你通过Pack Installer下载的器件支持包,占据的空间往往最壮观。默认情况下如果你没改过路径,它们位于:

C:\Users\你的用户名\AppData\Local\Arm\Packs

如果你不太确定,可以打开命令行,输入:

echo %LOCALAPPDATA%\Arm\Packs

回车后系统会显示当前用户的Pack实际路径。如果Pack目录已经不存在了,说明卸载时删掉了,那就不用管。如果还在,可以整个删除。这里我得说一句:Pack包体积很大,一块开发板的系列支持包动辄几百MB,如果你下载了STM32F4、STM32H7等多个系列的Pack,几GB是常有的事。你真的想彻底清理Keil5,这个目录必须删。

另外还有一个AppData\Roaming\Keil目录,它存放的是用户级配置文件、许可证信息。这个目录很多卸载程序根本不去碰。建议一并删除,别留。

有时候你还会发现AppData\Local\Temp里有一些Keil的临时文件,比如编译器生成的临时obj、依赖缓存什么的。这些一般在系统自动清理的范畴,如果强迫症发作想彻底清理,可以顺手清空,但不强求。

4.3 清理注册表:核心中的核心

接下来是整篇里的重点:注册表。很多人卸载软件后失灵,都是因为注册表里残留的键值没有清除。Keil5相关的注册表项,分布在几个固定位置,需要分别检查。

先打开注册表编辑器:Win+R,输入regedit,回车。打开后依次检查以下路径:

注册表路径说明
HKEY_LOCAL_MACHINE\SOFTWARE\Keil32位系统上安装信息主键
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Keil64位系统上32位程序的相关信息
HKEY_CURRENT_USER\Software\Keil当前用户的设置和License信息
HKEY_CLASSES_ROOT\Keil.UVprojx 等工程文件关联(扩展名ProgID)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall卸载列表所在位置,残留条目在这

在操作前,我的建议是先右击对应注册表项,选择“导出”,把备份保存到一个txt文件。这样万一误删,可以再双击导入恢复。实际操作中,你可以直接搜索“Keil”,然后把搜出来的和Keil相关的项全部删除。不过要注意,搜索出来的结果可能包含其他软件的残留,别乱删,凡是名字里明确带Keil或Arm的再删。

需要注意64位系统上一条关键路径:很多Keil信息其实存在WOW6432Node下,只删了SOFTWARE\Keil不完整,两个位置都要检查。如果你用的是注册表清理工具,比如Geek Uninstaller自带的残留清理或CCleaner的注册表清理,它们往往能一次找到多处残留,比手动翻快很多。但工具只删它认识的,最后的兜底还是集中在手动确认上面。

4.4 清理环境变量

环境变量是另一个隐蔽角落。Keil安装时,会在系统环境变量里写入一些路径,以便命令行工具直接调用armcc、fromelf等。

最常见的是PATH里追加了类似C:\Keil_v5\ARM\BIN、C:\Keil_v5\ARM\BIN\ARMCLANG这样的项。另外还可能创建了ARMCC、ARM_ROOT等自定义变量。

清理方法:右键“此电脑”->“属性”->“高级系统设置”->“环境变量”,在系统变量和用户变量里分别查找。如果确认存在Keil相关变量,点击编辑,把相关条目删除。如果整个变量只有Keil这一个值,可以直接删除该变量。这一步做完后,最好重新打开一个终端窗口,输入set,确认没有和Keil有关的变量输出。

有人会问,环境变量不清理会怎样?最典型的后果是,重装Keil后两个版本的工具链路径冲突,命令行下编译时调用了旧路径下的armcc,报“找不到文件”。另外清理干净后,如果你打算以后换用arm-gcc或者别的IDE,也可以避免工具链命令被截胡。

4.5 清理调试器驱动

如果你用过ULINK、ST-Link、J-Link等调试器,那么设备管理器里大概率还保留着对应的驱动。严格来说,这些驱动不算Keil主程序的残留,但如果你问的是“彻底删除Keil5”,那驱动也应该处理。

打开设备管理器(Win+X,选择设备管理器),展开“通用串行总线设备”“调试器设备”或“端口”等分类,找到名称带ULINK、CMSIS-DAP、ST-Link、J-Link等字样的设备。右键点击,选择“卸载设备”,然后在弹出的对话框中勾选“删除此设备的驱动程序软件”。注意,J-Link驱动通常是由SEGGER独立安装的,如果你用的是J-Link,可能还应该在“程序和功能”里卸载“SEGGER J-Link”软件。

不卸载驱动能不能用?能用,但会多个隐患:旧驱动和重装后的新驱动可能冲突,导致调试器识别不稳定。经历过这种事的应该都知道,连接不上的时候还以为板子坏了,其实只是驱动残留作怪。

5. 特殊情况:C51与MDK并存怎么处理

5.1 并存安装的卸载顺序

很多学51单片机的人,毕业后又开始玩STM32,于是电脑上同时装了Keil C51和Keil MDK-ARM两个版本。这种情况下,卸载顺序很有讲究。

两个版本共用同一个安装目录(通常是C:\Keil_v5),共用一个TOOLS.INI。如果你只卸其中一个,卸载程序往往会删掉共享的配置信息,导致另一个也“半残废”。比如你卸载MDK,发现C51编译器的配置、头文件路径全部混乱了;或者反过来,卸C51导致MDK的Device列表消失。

我的建议是:如果两个都不需要了,那就先卸载MDK-ARM,再卸载Keil C51,两个都走正规卸载流程,然后统一清理。如果只想留一个,就先把要留的那个版本涉及的所有自定义工程和Pack备份好,卸载另一个时尽量不选择删除共享配置(如果弹出询问),卸载完马上打开留下来的那个,检查Device列表是否正常,必要时重装包里的对应器件包。

5.2 只卸载其中一个的注意事项

只想装回一个版本的话,手动清理注册表时要格外小心。注册表里既有C51的信息,也有MDK的信息,全部删除会导致留下来的那个也失去License记录。

操作上,找到注册表里的Keil主键后,不要整个删,而是展开子项,看清楚哪个子项对应C51,哪个对应MDK。比如ARM子项对MWD,C51子项对C51。不过说实话,这种精确到子项的清理操作比较复杂,如果你不是特别熟悉注册表结构,我建议干脆把两个版本全部卸载彻底清理后再重装你要的那个,反倒省心,总比重装后跑来跑去追着报错要强得多。

6. 常见问题与排查技巧实录

6.1 卸载时提示“文件正在使用”怎么破

这个百分之百是后台进程占用了动态库或驱动文件。处理顺序是:

  1. 打开任务管理器,在“进程”里找到UV4.exe,右键结束任务。
  2. 查找JLink.exe、ST-LINK_SERVER.exe、armcc.exe等相关进程,全部结束。
  3. 还不行就重启一次,重启后立刻删,不要再打开Keil。
  4. 如果再删不了,建议进入安全模式,安全模式下大部分服务和dll都不会加载,删除会顺利很多。

多说一句,安全模式下注册表编辑器也可以用,如果你需要在安全模式下清理注册表,流程和常规状态下完全一致。

6.2 重装后License一直报错

这个问题十有八九跟注册表残留有关。旧License的CID信息还在注册表里,新装的Keil读取到后,会误以为你已经激活过,而它自己又校验不过,于是弹“No Valid License”。

处理方法是:重装Keil之前,把HKEY_LOCAL_MACHINE\SOFTWARE\Keil、HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Keil、HKEY_CURRENT_USER\Software\Keil全部删除,同时删除C:\Keil_v5\TOOLS.INI。然后重新打开Keil,进入License Management重新输入新License,问题基本就解决了。

还有一种情况是:你曾经手动把License放在安装目录下的LICENSE.TXT中,卸载时没删干净,重装时它会自动加载。这种文件通常在C:\Keil_v5\LICENSE.TXT,需要你手动删除。

6.3 清理后C盘空间没有变小

这是一个非常普遍的认知误区。很多人以为卸载Keil就等于释放了C盘,结果一看空间还是那样,就觉得“删了个寂寞”。实际上,Keil最占空间的并不一定是程序本体,而是Pack包。如果你卸载的时候选了“保留配置”,Pack就原封不动躺在AppData\Local\Arm\Packs里,一个STM32F4系列的支持包就可能达到几百MB,多个加在一起几GB一点不夸张。

所以删完检查一下这个目录,如果还在,就大胆删。另外还有Windows的WinSxS组件存储,卸载程序不一定立即释放文件,重启一次后才会真正归还空间,这是一个正常现象,不用过度担心。

6.4 卸载失败、卸载到一半退出了怎么办

卸载程序退出后,软件条目还“在”已安装列表里,这种情况比彻底删不掉更恶心。碰到这种情况,先别慌,两步走:

第一步,先用Geek Uninstaller这个工具扫描已安装程序,找到Keil条目,选择“强制卸载”。它会自动调用卸载程序并清理注册表残留。很多普通卸载工具能搞定这种事。

第二步,如果它也无能为力,那就进入注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall下的对应条目,手动删除。这里删除后,软件才会从“已安装应用”列表里消失。然后继续按前文的清理流程处理其他残留。

6.5 残留的快捷方式和右键菜单

偶尔你会注意到,开始菜单里的“Keil”程序组还在,右键单击.uvprojx文件时还会出现Keil打开选项。这些都是文件关联和开始菜单残留,处理起来很简单:开始菜单目录直接删掉C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Keil v5之类的文件夹;文件关联则在注册表里搜索.HKEY_CLASSES_ROOT\Keil.UVprojx,找到后删除。删除后右键菜单里就不会再出现Keil相关项了。

7. 我的卸载经验总结

写了这么多,最后想说说我在实际清理过程中养成的一个习惯——绝对不在“还能凑合”的时候去卸载Keil。这种开发工具,一旦装出了问题,概率上多半比你想的复杂。我很多次帮人排查Keil问题,最后的原因都往同一个方向收束:上一次卸载没有清干净。

如果你是遇到了顽固问题想重装,别一上来就删,先备份工程、记下License,然后完完整整走一遍卸载流程。卸载程序跑完,再按上文顺序清理安装目录、AppData、注册表、环境变量、驱动。最后一招——重启。重启能让残留文件释放占用,也让注册表真正“静下来”,回头再重装,你会发现自己少走了无数弯路。

这套流程我前后实践了不下十次,从Win7到Win11都适用,C51和MDK并存也试过,只要按顺序走,极少再出现重装后的诡异毛病。如果你正在经历Keil5卸载又卸不掉的痛苦,不妨照着文中的清单一项项操作,应该能把这个“顽固分子”真正清理出去。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 1:24:57

格行SP970随身WiFi刷机全攻略:去云控、备份与救砖

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 1:24:57

揭秘io4cj测试体系:HLT、LLT、UT与FUZZ模糊测试四层保障实战解析

揭秘io4cj测试体系:HLT、LLT、UT与FUZZ模糊测试四层保障实战解析 【免费下载链接】io4cj 一个IO处理库 项目地址: https://gitcode.com/Cangjie-TPC/io4cj io4cj 是仓颉开源 IO 库(定位对标知名 Okio),它的可靠不只是代码优…

作者头像 李华
网站建设 2026/9/25 1:24:51

六代希沃一体机侧边栏改造:随机抽选功能实现与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 1:24:36

Origin绘制相关性热力图:零代码生成可发表级Correlation Plot

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 1:24:33

多设备并发Appium+pytest多线程实战:架构设计与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华