限制非管理员账户卸载软件需四步:一是用组策略隐藏“应用和功能”和“程序和功能”入口;二是通过注册表权限设置拒绝users组对uninstall键的写入与删除;三是禁止users对安装目录执行、删除、修改权限;四是禁用windows installer服务以阻断所有msi卸载行为。

限制非管理员账户卸载软件,本质是切断普通用户对系统级卸载入口、注册表卸载项和安装目录的写入与执行权限。Windows 默认允许标准用户查看“应用和功能”列表,但卸载动作本身需触发UAC提权——只要阻止该提权路径或剥夺底层权限,就能实现有效限制。
禁用标准卸载入口(控制面板+设置)
第一步:按 Win + R 输入 gpedit.msc 回车,打开本地组策略编辑器(仅限专业版/企业版)。
第二步:依次展开 → 计算机配置 → 管理模板 → Windows组件 → “应用” → “应用和功能”。
第三步:双击右侧“隐藏‘应用和功能’页面”,设为【已启用】→ 点击确定。这会让标准用户在设置中完全看不到卸载入口,连点击机会都没有。
第四步:返回左侧,依次展开 → 用户配置 → 管理模板 → 控制面板 → “程序” → “程序和功能”。双击“隐藏‘程序和功能’”,同样设为【已启用】。此操作将屏蔽控制面板中的卸载界面,且不依赖管理员权限即可生效。
注意:这两项策略对当前登录用户立即生效,无需重启;但若用户已打开“设置”或“控制面板”,需关闭后重新打开才可见变化。
锁定注册表卸载键值权限
方法一:直接禁写卸载项路径
按 Win + R 输入 regedit 回车,定位到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
右键该键 → “权限” → 选中“Users”组 → 勾选下方“拒绝”栏中的【写入】和【删除】两项 → 点击确定。这会阻止所有标准用户向卸载列表写入或删减条目,卸载程序将因找不到自身注册信息而失败。
方法二:封死特定软件的卸载能力
在同一注册表路径下,找到目标软件对应的子项(通常以GUID或软件名命名),右键 → “权限” → 选中“Users” → 勾选【完全拒绝】→ 确定。此操作比方法一更精准,但需逐个处理,适合重点管控个别软件。
【关键提醒】 修改前务必导出该注册表项备份,误拒“Administrators”组权限将导致管理员也无法卸载。
移除安装目录执行权限
进入软件默认安装路径(如 C:\Program Files\XXX 或 C:\Program Files (x86)\XXX),右键文件夹 → “属性” → “安全”选项卡 → 点击“编辑”。
在用户列表中选中“Users”,将下方权限框中“遍历文件夹/执行文件”、“删除”、“修改”三项全部设为【拒绝】→ 点击确定。
这一步会让标准用户无法运行该目录下的 uninst.exe、uninstall.exe 等卸载程序,即使他们知道路径并双击,也会提示“拒绝访问”或“不是有效的Win32应用程序”。
注意:部分软件卸载程序依赖临时解压,若同时拒绝“写入”权限,可能引发卸载进程崩溃而非静默拦截——建议先测试再批量部署。
停用Windows Installer服务(高限制级别)
按 Win + R 输入 services.msc 回车,找到“Windows Installer”服务。
右键 → “属性” → 启动类型改为【禁用】→ 点击“停止”按钮 → 确定。
此操作将彻底瘫痪所有基于MSI引擎的安装与卸载行为,包括通过设置、控制面板、命令行(msiexec)发起的卸载请求。标准用户点击卸载按钮后会直接报错:“Windows Installer服务无法使用”。
【不可逆警告】 禁用该服务会影响所有依赖MSI的软件更新、修复及部分系统组件维护,请仅在封闭终端环境(如公共机房、Kiosk模式)中启用,并确保有备用恢复手段。











