Windows 下跨用户使用小狼毫输入法

发布于 2024-07-22  431 次阅读


背景

先前通过利用 Windows 受限用户隔离毒瘤应用,将毒瘤软件隔离于低权限用户之下,正如之前提到的那样,隔离之后的软件『不支持部分第三方输入法』,倒也不是不支持,主要是因为用户配置是独立的,不配置的话无法正常输入,如果不在意进入桌面后自动生成的那一堆用户配置文件的话(大概 1 GiB),直接进入创建的低权限用户(下文用 iso 替代)的桌面配置即可,高级一点的输入法也可以通过桌面悬浮工具栏直接配置而无须进入 iso 的桌面,这里我们用小狼毫输入法举例说明不进入桌面配置的方法。

配置目录

这里需要注意的是,iso 的输入法配置文件保存地址与『小狼毫安装选项』中的『用户资料夹无关』,实际在 C:\Users\iso\AppData\Roaming\Rime,那么这时就有两个选择了,一个是单独配置,一个是与主用户同步,各有优劣,我是与主用户同步。

找到自己主用户的小狼毫输入法的配置文件目录,如我的是 D:\Program Files\Rime,需要注意的是,如果你的主用户小狼毫输入法配置文件在家目录(C:\Users\*\AppData\Roaming\Rime),那么为了安全起见,无法使用『与主用户同步』的方法,请使用『单独配置』的方法。

配置输入法(与主用户同步)

首先删除文件夹 C:\Users\iso\AppData\Roaming\Rime。再在 C:\Users\iso\AppData\Roaming 目录按住『Shift』后点击鼠标右键,选择『在当前位置打开 终端/CMD/Powershell』,运行命令 mklink /d "C:\Users\iso\AppData\Roaming\Rime" "D:\Program Files\Rime",具体路径根据你的实际情况替换。

配置输入法(单独配置)

这个简单,要么自己重写一份,要么直接把原配置往 C:\Users\iso\AppData\Roaming\Rime 复制一份。

应用输入法配置

然后依次输入以下命令(在弹出的窗口中输入用户名 iso 及密码并点击确认):

powershell
$cred = Get-Credential
Start-Process powershell -ArgumentList '-Command Start-Process powershell' -Credential $cred -LoadUserProfile
$env:__COMPAT_LAYER = 'RunAsInvoker'
cd "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\小狼毫输入法"
./【小狼毫】重新部署.lnk

使用输入法

之后,参考利用 Windows 受限用户隔离毒瘤应用,在桌面创建『小狼毫算法服务』的快捷方式,然后为小狼毫输入法设置跨用户的快捷启动方式即可(如何设置开机自启这里就不撰述了),如下文,根据自己实际对应替换:

$password = '114514'
$cred = [pscredential]::new('iso', ($password | ConvertTo-SecureString))
$env:__COMPAT_LAYER = 'RunAsInvoker'
Start-Process powershell -ArgumentList '-Command Invoke-Item ~\Desktop\小狼毫算法服务.lnk' -WorkingDirectory 'C:\Program Files (x86)\Rime\weasel-0.16.1' -Credential $cred -LoadUserProfile -WindowStyle Hidden

成功启动后,便可在被 iso 隔离的应用中使用小狼毫输入法了,另外此时任务管理器可以看到个进程,一个主用户,一个 iso,如下图: