修正 TextServicesFramework 無法正確啟動的問題


感覺這半年來,電腦作業系統出問題的機會好高啊…

五月的時候,因為硬碟掛了,不小心把裝在 SSD 上的作業系統也搞掛了;之後因為忘了自己還在 Insider(測試版),結果一次 Windows Update 又把系統搞死了

而這次呢?則是 Heresy 在試著清除系統的暫存檔案(設定、系統、儲存體、暫存檔案)、重開機後它忽然跳通知,說磁碟機有問題要掃描;而掃描後他說要重開機進行修正(基本上就是 chkdsk /f),結果重開機後就出包了。 orz

問題變成是:

檢查磁碟→自動修復→修復失敗→檢查磁碟

這樣的無限迴圈。

某方面來說,真讓人覺得,現在的 Windows 10 會不會太脆弱啊… orz

後來把 SSD 拆下來拿到別的電腦上跑 chkdsk /f 測了一下,貌似沒問題?
感覺是似乎是不知道為什麼,它自身系統的磁碟檢查一直無法正確完成造成的?

到這邊都還好,比較慘的,其實是接下來…

似乎是 Heresy 這邊的 SATA 線接觸真的不好、又或者是現在在用的 M.2 轉 SATA 轉卡有問題(個人傾向於是後者),這次又弄出和五月時同樣的狀況

因為 SSD 的 SATA 訊號傳輸有問題,所以導致系統資料損毀

不過還好有上次的經驗,這次滿早就想到這個可能性了;所以趕快關機、把 SATA 線拔掉、把接點清一清再重新插好。

或許是由於及早發現,這次雖然沒有慘到像上次一樣整個不能開啟,但是還是有出現檔案損毀的問題。

這邊姑且是透過執行

sfc /scannow
DISM.exe /Online /Cleanup-image /Restorehealth

做了一定程度的檔案修正,但是實際上,應該還是有問題。


這邊最主要的問題,是輸入法整個不能用、連右下角的語言圖示都不見了;而且在 UWP 的 Windows App、所有鍵盤操作都沒有反應了(包括 Ctrl + C、Ctrl + V)。

找了一下後,在《keyboard does not work on WindRT apps》這篇找到答案,說是要去啟用「工作排程器」中的「TextServicesFramework」來解決。

感覺上這個名字很眼熟?後來看了一下,其實就是 Heresy 在幾年前寫的《解決 Windows 10 無法切換語系、輸入中文的問題》這篇文章裡面的主角。

不過,Heresy 這次碰到的問題和之前又不一樣,因為 Heresy 這次雖然還是可以在「工作排程器」裡面找到「TextServicesFramework」,但是當按下執行後,卻會出現錯誤訊息、沒有辦法執行

很遺憾,在處理的時候忘了把錯誤訊息記錄下來了,不過基本上就是「這個工作已經不存在」之類的錯誤;感覺上,應該是之前檔案損毀、把這部分的資料也搞爛了。

而在該討論串下面,其實也有給這樣的問題的解法,基本上就是重新建立這個排程工作

他的做法,就是先下載「TextServicesFramework」這個工作的描述檔(XML、連結);這邊也可以自己建立、其內容如下:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Source>Microsoft Corporation</Source>
    <Description>TextServicesFramework monitor task</Description>
    <URI>Microsoft\Windows\TextServicesFramework\MsCtfMonitor</URI>
    <SecurityDescriptor>D:(A;;FA;;;BA)(A;;FA;;;SY)(A;;FR;;;BU)</SecurityDescriptor>
  </RegistrationInfo>
  <Triggers>
    <LogonTrigger>
      <Enabled>true</Enabled>
    </LogonTrigger>
  </Triggers>
  <Principals>
    <Principal id="AnyUser">
      <GroupId>S-1-5-32-545</GroupId>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>true</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="AnyUser">
    <ComHandler>
      <ClassId>{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}</ClassId>
    </ComHandler>
  </Actions>
</Task>

然後,在工作管理員裡面,則可以點選右側的「匯入工作」、然後選擇這個 XML 檔來完成匯入。

不過為了以後處理方便,個人會建議按照本來的路徑「\Microsoft\Windows\TextServicesFramework」一層一層進去、在這個位置匯入,以避免以後路徑不一樣造成問題。

而如果路徑不存在的話,可以自己建立;如果是像 Heresy 這邊一樣,已經有同名的工作的話,則是要刪掉後再匯入。

之後,只要執行這個工作,就可以修正問題了;重開機後,也都不會有問題了~

對「修正 TextServicesFramework 無法正確啟動的問題」的想法

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.