我使用以下方法创建了自定义键盘布局Microsoft 键盘布局创建器(MSKLC) 工具并生成一个“构建包”,以便轻松安装。键盘布局的安装需要管理员权限。它基本上将生成的.DLL
文件(构建结果的一部分)复制到C:\windows\system32
Windows 注册表中并将其注册。
就我而言,我想在权限有限的系统上使用相同的键盘布局。但是我可以修改 Windows 注册表。
因此我尝试了以下操作(在具有管理员权限的电脑上):
- 复制
custom.dll
到C:\custom.dll
- 将路径从现有(已注册)的键盘布局更改为
..\..\custom.dll
;例如:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000100c
;Layout File = ..\..\custom.dll
- 在系统设置中选择修改了其相关 DLL 文件路径的键盘布局(在本例中为“瑞士法语”布局)。
成功了!失败了。(一开始我以为成功了,但我肯定搞混了。)似乎文件必须位于其中,C:\windows\system32
而不能使用相对路径引用。
基本上我想使用自定义键盘布局(DLL),但我无法使用生成的部署包,因为我没有权限写入文件C:\windows\system32
。但我可以修改 Windows 注册表。有没有办法让我继续加载此布局?
我的操作系统:Windows 10 x64
答案1
微软已于 2012 年发布了针对旧版 Windows 的更新,以验证键盘布局是否包含在内%Windir%\System32
,而不是位于其他地方并由相对路径引用。
看 ”MS12-034:Windows XP 和 Windows Server 2003 中 CVE-2012-0181 的安全更新说明:2012 年 5 月 8 日“
此更新如何进行?
此更新将枚举计算机上注册的所有键盘布局文件,然后验证它们是否都位于 %Windir%\System32 文件夹中。
微软希望确保键盘布局文件位于正确的目录中。如果可能的话,那将是安全漏洞。我找不到有关 Windows 10 的任何具体信息,但可以假设同样的逻辑也适用于此。
回答我最初的问题:如果不能将 DLL 文件复制到,就无法注册键盘布局%Windir%\System32
。