如何通过注册表或C#代码禁用Tabtip.exe的设置与布局选项
禁用屏幕键盘(Tabtip.exe)右上角设置选项的解决方案
你之前尝试修改的EnableDesktopModeAutoInvoke和EnableFloatingHandwriting注册表项,作用是控制屏幕键盘的自动唤起和浮动手写面板显示,和右上角的设置按钮没有关联,所以不会生效。以下是针对需求的有效解决方案:
一、注册表修改方法
禁用右上角设置按钮
修改以下注册表项(需管理员权限):
- 针对所有用户:
路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TabletTip\1.7
新建/修改DWORD值DisableSettings,设置为1 - 仅针对当前用户(无需管理员权限):
路径:HKEY_CURRENT_USER\SOFTWARE\Microsoft\TabletTip\1.7
新建/修改DWORD值DisableSettings,设置为1
禁用内部布局设置
如果需要同时禁用布局切换选项,添加/修改同路径下的DWORD值DisableLayoutOptions,设置为1
修改完成后,杀死并重启Tabtip进程即可生效:
taskkill /f /im tabtip.exe start tabtip.exe
二、C#代码实现
修改注册表的代码(需管理员权限)
using Microsoft.Win32; using System; using System.Diagnostics; class TabtipSettingsManager { static void Main() { try { // 修改HKLM下的全局设置(需要管理员权限) using (var lmKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\TabletTip\1.7", true)) { lmKey?.SetValue("DisableSettings", 1, RegistryValueKind.DWord); lmKey?.SetValue("DisableLayoutOptions", 1, RegistryValueKind.DWord); } // 修改HKCU下的当前用户设置 using (var cuKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\TabletTip\1.7", true)) { cuKey?.SetValue("DisableSettings", 1, RegistryValueKind.DWord); cuKey?.SetValue("DisableLayoutOptions", 1, RegistryValueKind.DWord); } // 重启Tabtip进程 KillAndRestartTabtip(); Console.WriteLine("设置已生效"); } catch (UnauthorizedAccessException) { Console.WriteLine("请以管理员身份运行此程序"); } catch (Exception ex) { Console.WriteLine($"操作失败:{ex.Message}"); } } private static void KillAndRestartTabtip() { // 杀死现有Tabtip进程 foreach (var process in Process.GetProcessesByName("tabtip")) { process.Kill(); } // 重启Tabtip Process.Start(@"C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe"); } }
注意事项
- 不同Windows版本的TabletTip注册表路径可能不同(比如部分版本是
1.8或1.9),如果1.7路径不存在,可检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TabletTip下的其他子项。 - 修改HKLM路径的注册表项必须以管理员身份执行,否则会抛出权限异常。
内容的提问来源于stack exchange,提问作者beiduoan
相关产品推荐
相关产品推荐

