首先,你需要设置系统的注销&关机声。
在注册表中转到下面的路径:
HKEY_CURRENT_USER\AppEvents\EventLabels\WindowsLogoff
HKEY_CURRENT_USER\AppEvents\EventLabels\SystemExit
将它们目录下的ExcludeFromCPL
统统删除(或将值改为0)。
转到声音控制面板,在声音事件中添加注销&关机声。
完。看到这里别急着退出,后面还有!
这是一个 Classic Shell 安装程序,我们将通过它实现功能(别忘了改后缀)。
安装完毕即可。打开它的开始菜单,点击关机或注销,你就会听到它们了。
原理
在早些时候,我发现 Classic Shell 开放了源代码(煋人x1),然后发现它的关机方式是——
ExitWindowsEx() 函数用来退出、重启或注销系统。
自己关机!只要在它执行这个函数之前先播放声音,不就可以恢复注销&关机声了吗?
就是这样。功能实现即基于上述思路。
增加的功能代码即将上传到 https://github.com/DellZHackintosh/Classic-Shell,欢迎参考。
Bug&限制
- 若中断注销&关机,执行相同的操作时将不再播放注销&关机声。
- 没有登录声——因为 Classic Shell 不管登录。。。
- 如果换回系统的开始菜单,哪怕不卸载 Classic Shell 也不会再听到注销&关机声,因为它们必须要 Classic Shell 亲自执行注销&关机命令才会播放。
- 由于关机顺序与传统不同,播放声音期间 Explorer 可能看起来无响应(尤其是声音较长时)。不要执行其它操作,耐心等待声音播放完毕,随后注销或关机进程将继续。
就这样。