一键禁用 Ctrl+Alt+Shift+Windows 打开 Office 全局快捷键实用工具

很多使用 Windows的朋友,都很讨厌 Office 的全局快捷键,也就是 "Alt+Ctrl+Shift+Windows" 弹出 Office窗口,想禁用掉。

这个组合键在系统里藏得很深,设置根本关不掉。妥妥的就是个流氓快捷键。

Office 快捷键管理助手就是为了解决这个小问题编写的小工具,本程序使用 AU3 编写。

下载地址:

点此下载 《OfficeHotkeyManager.zip

操作非常简单:

一键屏蔽:点一下"Disable Hotkey",按 "Ctrl+Alt+Windows+Shift" 就不会弹出 Office了。

一键找回:如果想重新用这个快捷键弹出 Office,点一下"Enable Hotkey"就能复原,非常方便。

注意:必须用系统管理员权限运行。

用法:

  1. 以管理员权限启动本程序:
    因为改注册表得有系统最高权限,所以双击打开时,如果弹出"是否允许修改"的UAC安全提醒框,请点"是"允许。
  2. 点击"Enable"或"Disable"启用或禁用快捷键。
  3. 弹出"Success"提示框就搞定了。不用重启电脑,现在你就可以按 "ctrl+alt+windows+shift" 四个键试试,保准没反应。

原理:

这个快捷键本质上是在唤起调用系统里的一个叫 ms-officeapp 的协议。

程序的工作原理很简单:在注册表里把这个协议执行命令给替换劫持了。原本按键是让系统"去开 Office",现在被改成了"去运行 rundll32.exe"。因为这个 rundll32 后面没跟任何命令,所以它跑一下就自动静默退出了,不弹出任何窗口。

结果就是键盘按了,系统响应了,但看起来啥反应都没有。

这个工具只是屏蔽快捷键,不会删掉你的 Word 或 Excel,更不会动你的文档,放心使用。


本程序使用 AU3 编写。

autoit3 复制代码
#NoTrayIcon
#RequireAdmin

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>

Global Const $REG_PATH_HKLM = "HKLM\Software\Classes\ms-officeapp\Shell\Open\Command"
Global Const $REG_PATH_HKCU = "HKCU\Software\Classes\ms-officeapp\Shell\Open\Command"
Global Const $TARGET_VAL = "rundll32.exe"

Local $hMainGUI = GUICreate("Office hotkey Manager", 400, 220)
GUISetFont(10, 400, 0, "Microsoft YaHei")

Local $sDescription = "Description:" & @CRLF & _
"This utility manages the 'Ctrl+Win+Alt+Shift' shortcut." & @CRLF & _
"Enable: Restores the default Office app behavior." & @CRLF & _
"Disable: Shortcut key will not open Office app."
GUICtrlCreateLabel($sDescription, 20, 20, 360, 100)

Local $idBtnAction = GUICtrlCreateButton("Checking Status...", 100, 140, 200, 40)

GUISetState(@SW_SHOW)

_RefreshStatus($idBtnAction)

While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idBtnAction
_HandleToggle($idBtnAction)
EndSwitch
WEnd

Func _IsDisabled()
Local $sVal = RegRead($REG_PATH_HKCU, "")
Return ($sVal == $TARGET_VAL)
EndFunc ;==>_IsDisabled

Func _RefreshStatus($ctrlID)
If _IsDisabled() Then
GUICtrlSetData($ctrlID, "Enable Hotkey (&E)")
Else
GUICtrlSetData($ctrlID, "Disable Hotkey (&D)")
EndIf
EndFunc ;==>_RefreshStatus

Func _HandleToggle($ctrlID)
If _IsDisabled() Then
; To Enable: Delete the hijacked keys
RegDelete($REG_PATH_HKLM)
RegDelete($REG_PATH_HKCU)
MsgBox($MB_ICONINFORMATION, "Success", "Office shortcut has been ENABLED.")
Else
; To Disable: Write the hijacked keys
RegWrite($REG_PATH_HKLM, "", "REG_SZ", $TARGET_VAL)
RegWrite($REG_PATH_HKCU, "", "REG_SZ", $TARGET_VAL)
MsgBox($MB_ICONINFORMATION, "Success", "Office shortcut has been DISABLED.")
EndIf
_RefreshStatus($ctrlID)
EndFunc ;==>_HandleToggle
相关推荐
西西学代码3 小时前
Flutter---StreamBuilder案例
javascript·windows·flutter
jiang_changsheng3 小时前
Conda 的默认环境创建优先级。
linux·windows·python
黄一一9112434 小时前
硬盘健康监测软件!绿色便携版!电脑硬盘还能用几年?CrystalDiskInfo工具帮你提前避开数据丢失
windows·电脑·硬件工程·开源软件
奇牙coding5 小时前
gpt-5.6-luna 调用报 400 bad_request 怎么办?同样的 messages 在 gpt-5.5 没问题——两处校验差异和修复写法
java·windows·gpt·ai
樂禮6 小时前
Windows-Arch Linux 键鼠共享 & 剪贴板同步配置
linux·运维·windows
未来可期丶6 小时前
【开发环境】Windows+Docker Desktop+WSL2最佳实践
windows·docker·docker desktop·wsl2
2501_9419820514 小时前
企业微信二次开发:私域数据基石——三大核心基础能力接口实战
windows·架构·bootstrap·企业微信
美丽的欣情1 天前
RK3588 Debian 交叉编译环境搭建(Windows + VMware Debian + CMake)
运维·windows·debian
勤劳打代码1 天前
Flutter 架构指南 —— windows 平台安装拆解
windows·架构
aramae1 天前
C++11:现代C++的里程碑
c语言·开发语言·c++·windows·git·后端