windows 重新分配/覆盖热键(Win + L)以锁定窗口

8hhllhi2  于 2023-03-04  发布在  Windows
关注(0)|答案(6)|浏览(422)

是否可以将Win+L热键重新分配给另一个可执行文件/快捷方式?
用例-我想在笔记本电脑的显示器锁定后立即关闭它。我知道有一个可执行文件可以锁定并关闭显示器,但我不想改变系统锁定的方式(通过显式运行程序或其他快捷方式)。如果Win+L可以分配给这个可执行文件,那将是最好的。

bd1hkmkf

bd1hkmkf1#

您需要设置以下注册表项以完全禁用Windows锁定功能:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000001

并重新启动计算机。
这适用于Win7、Win8和Win10

3xiyfsfu

3xiyfsfu2#

Win+L是一个系统分配的热键,没有禁用它的选项。这意味着应用程序没有办法检测到它,除非你使用一个低级的全局键盘钩子(WH_KEYBOARD_LL)。这在XP SP3中有效;我还没有在Vista中测试过:

LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wparam, LPARAM lparam) {
    KBDLLHOOKSTRUCT& kllhs = *(KBDLLHOOKSTRUCT*)lparam;
    if (code == HC_ACTION) {
        // Test for an 'L' keypress with either Win key down.
        if (wparam == WM_KEYDOWN && kllhs.vkCode == 'L' && 
            (GetAsyncKeyState(VK_LWIN) < 0 || GetAsyncKeyState(VK_RWIN) < 0))
        {
            // Place some code here to do whatever you want.
            // ...

            // Return non-zero to halt message propagation
            // and prevent the Win+L hotkey from getting activated.
            return 1;
        }
    }
    return CallNextHookEx(0, code, wparam, lparam);
}

注意你需要一个 * 低级 * 键盘钩子。一个 * 普通 * 键盘钩子(WH_KEYBOARD)不能捕获热键事件。

gmxoilav

gmxoilav3#

基于注册表的解决方案本身完全禁止锁定系统(甚至通过Start菜单)。
这里有一个方法,它实际上提供了一种不用Win-L和弦就可以锁定计算机的方法。锁定可以通过任务栏上的快捷方式来完成,也可以通过依次按下它们然后按Enter键来完成。
首先,创建一个批处理文件,它可以切换系统锁定并触发锁本身;执行此操作的说明摘自a forum post

  • 创建注册表编辑文件来打开或关闭系统锁定。这与布伦特的答案相同。
  • DisableLockWorkstation.reg中:
Windows Registry Editor Version 5.00
 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
 "DisableLockWorkstation"=dword:00000001
  • EnableLockWorkstation.reg中:
Windows Registry Editor Version 5.00

  [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
  "DisableLockWorkstation"=-

*运行reg-edit脚本以禁用系统锁定。

  • 使用.reg文件创建批处理文件以切换特征:
regedit /S EnableLockWorkstation.reg
rundll32.exe user32.dll,LockWorkStation
regedit /S DisableLockWorkstation.reg

现在,您可以create a shortcut and pin it to the taskbar

  • 右键单击批处理文件并创建快捷方式。
  • 右键单击新快捷方式,编辑快捷方式属性,然后将目标更改为cmd.exe /C "<path>\lock.bat",其中<path>lock.bat文件的完整路径。
  • 快捷方式现在应该可以固定到任务栏(在手动更改目标之前,这是正确的);它可以正常地被拖到那里。
  • (请注意,在将快捷方式固定到任务栏 * 之前 *,您可能还需要将图标更改为类似挂锁的图标。)

如上所述,一旦你完成了上述过程,你应该能够锁定计算机使用Win,L,Enter的顺序(不是作为一个和弦-虽然看下面的解决方案使用Ctrl-Alt-L作为一个和弦)。这是因为该序列解释如下:

  • Win --调出“开始”菜单,但实际上并不需要等待它加载
  • L --查找自定义锁脚本;在我的计算机上,lock.bat快捷方式始终是第一个L结果如果它是我的任务栏上以L开头的唯一快捷方式。(在尝试以这种方式锁定计算机之前,请验证!)
  • 输入--一旦搜索找到一个项目,它将被启动--即快捷方式将被调用,并且您的计算机将被锁定。您需要等待搜索加载;你可以快速按Win,L,回车顺序然后走开。屏幕不会立即锁定,但应该会在几秒钟内锁定。

下面是我创建的任务栏快捷方式的图片(使用this icon):

EDIT:使用和弦,如Ctrl-Alt-L

在下面的评论中,用户lub 094建议将快捷键指定为 chordCtrl-Alt-L(或任何您喜欢的快捷键)。我没有花时间测试这个方法,因为我已经重新启用了系统快捷键,但我认为它可以工作。

  • 使用内置的快捷方式创建功能来指定和弦:

  • 将快捷方式本身放在“开始菜单”文件夹中:
"C:\Users\ [user_name]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ [custom_folder]\"
huus2vyu

huus2vyu4#

看起来你不能。
您可以通过对注册表进行以下更改来禁用除Win + L和Win + U之外的所有内置Windows热键(这应该适用于所有操作系统,但可能需要重新启动):
注册表项当前用户\软件\Microsoft\Windows\当前版本\策略\资源管理器NoWinKeys注册表项数据0x0000001(1)
http://www.autohotkey.com/docs/misc/Override.htm
但是你可以尝试使用Tweak UI。在资源管理器树视图项下,取消选中"Enabled Windows + X"热键。Hoekey也可能工作,还没有尝试过。Source

k3fezbri

k3fezbri5#

@FrancoisB方法适用于Win8和Win7。要自动执行解决方案:
1.创建后缀为.reg的文本文件(例如DisableWinL.reg)
1.粘贴以下内容并保存文件:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000001

1.使用RegEdit打开该文件(双击应该可以)以执行更改。
这个文件可以复制到一台新的机器上重复这个过程,并且可以创建另一个名为“EnableWinL.reg”的文件来重新启用Win+L键:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000000
4ktjp1zp

4ktjp1zp6#

使用windows 10的电动玩具。在那里你可以选择重新Map快捷方式。

相关问题