[IT168試客]
在去年的10月10日,微軟正式為Windows 10操作系統推送了秋季創意者更新1709,Win10 1709增加了包括人脈、時間軸視圖、Story Remix在內的諸多新特性,與此同時也增加了一個新功能,系統啟動后會自動打開上次未關閉的程序,比如上次關閉時沒有關閉的網頁或者Word文檔等,下次開機后會自動幫你打開。
這個新功能一看就是參考了Mac上使用的OS X系統的一項特性,雖然比較智能化,不過開機自動打開上次未關閉的程序文檔或者網頁有時也會造成隱私泄露等問題,所以OS X在關機時會彈出一個選項讓我們自行決定再次登錄時是否打開未關閉的程序口。
不過到了Win10 1709上,這項功能似乎是被強制啟用的,沒有任何讓我們自己選擇的空間,只要你的Win10系統開啟了快速啟動功能,那么開機后一定會自動打開上次未關閉的程序。對于這樣一項我們并不想啟用的功能難道就真的束手無策了嗎?
實現原理:通過操作系統的RunOnce調用
經過了一段時間的研究發現,Win10 1709新增的這項開機自動打開上次未關閉的程序功能,其實實現原理很簡單。系統在得到關機指令后,會將正在運行的應用一個個結束掉然后關機,在結束掉應用所在進程的時候,系統會自動將自動關閉的應用程序所在路徑添加到注冊表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce目錄下。
RunOnce是Windows系統自帶的一個功能,在系統啟動后被Windows資源管理器調用,可以將對應的注冊表項下的鍵值執行一次,執行完畢后其對應的注冊表字符串值也會被自動刪除。RunOnce注冊表項一般在軟件安裝時用到的比較多,舉例來說當我們更新Realtek聲卡驅動時,驅動的安裝程序一般會告訴我們先要卸載舊版驅動,然后手動重啟,重啟后安裝程序會自動啟動來繼續新驅動的安裝。這里其實就是驅動的安裝程序調用了RunOnce功能,在卸載掉了舊版驅動程序后向注冊表的RunOnce項中添加了安裝文件所在路徑,然后重啟后會自動打開該文件來執行后續操作,Win10的開機自動打開上次未關閉的程序也是通過RunOnce來實現的。
不過有人可能會問,為什么我關機的時候很多應用都沒關閉,可是下次開機的時候只有部分應用被自動打開了,有不少應用沒有自動打開呢?這里和RunOnce的運行權限有一定的關系,默認情況下RunOnce只能打開非管理員權限的應用,如果某個程序執行文件上面有小盾牌標識,也就是需要使用管理員權限運行時,RunOnce是不能自動打開的。
解決方法:設置注銷腳本刪除RunOnce注冊表項
在了解了Windows 10開機自動打開未關閉程序的實現原理后,我們就可以很輕松的來解決這個問題,每次關機的時候把注冊表的RunOnce子項刪除掉即可,這里我們可以通過設置注銷腳本來操作。
Win10專業版用戶:
同時按住Windows鍵和R鍵打開運行,輸入gpedit.msc,然后按回車打開組策略編輯器
在組策略編輯器左側列表的用戶配置下展開Windows設置,找到腳本(登陸/注銷)設置項
在腳本設置項右側的窗口中找到注銷,雙擊打開
在打開的注銷屬性窗口中點擊添加按鈕來添加注銷腳本
腳本名:C:\Windows\System32\reg.exe
腳本參數:Delete HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /va /f
輸入完成后點擊確定,注銷腳本添加成功,這樣系統在關機前進行注銷操作時都會自動執行Delete HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /va /f這個命令,注冊表的RunOnce項會自動刪除,再也不會出現開機后自動打開上次未關閉應用程序的問題了
Win10家庭版用戶:
家庭版和專業版在具體設置上沒有差別,只不過默認情況下Win10家庭版沒有內置組策略編輯器,需要我們使用批處理命令來開啟,直接將下方代碼復制到空白文本文檔里,保存文件名為“家庭版啟用組策略”,然后將文件擴展名更改成.cmd或者.bat文件即可。
@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause
執行該批處理文件時請右鍵選擇“以管理員的身份運行”
之后系統會自動彈出命令提示符窗口執行啟用組策略的命令,執行完畢后按任意鍵關閉窗口
然后我們就可以在家庭版系統上使用組策略啦,剩下的步驟和專業版相同,這里就不多啰嗦了
副作用:部分安裝程序重啟后需要手動運行
我們前面通過禁用RunOnce的方法來達到禁止開機啟動上次未關閉程序的效果,這樣相當于將RunOnce功能給禁用掉了,一些需要依賴RunOnce的軟件安裝程序在重啟后也會出現無法自動打開的情況,需要我們手動運行。
還是以更新Realtek聲卡驅動為例,當我們運行Realtek驅動安裝程序后,會出現安裝選項說明,告知我們安裝程序會分兩個步驟進行,首先安裝程序會卸載掉目前正在使用的舊版驅動,然后重啟后自動安裝新版驅動
因為RunOnce功能被禁用掉了,所以在第二步重啟后安裝程序不會自動打開并安裝新版驅動,需要我們手動再打開一遍安裝程序方可。
由于Windows 10頻繁升級,不穩定或這樣那樣的怪現象也時有發生。有的用戶發現,有時在重啟Windows 10之后,桌面圖標不斷重新排列和移動位置,原來弄好的桌面布局被打亂。若不幸遇到這種情況,可嘗試下面的一些解決辦法。
1. 利用桌面圖標排列命令
首先嘗試利用桌面右鍵菜單的圖標排列相關命令。右鍵單擊桌面空白處,在“查看”菜單下,通過點擊,保證“自動排列圖標”和“將圖標與網格對齊”兩個選項處于未被選中狀態(圖1)。
2. 重置系統圖標緩存文件
桌面圖標錯亂也可能是由于系統圖標緩存文件出現問題所致,可通過重置系統圖標緩存文件解決。系統圖標緩存文件IconCache.db位于“C:\Users\<當前用戶名>\AppData\Local”下,是一個隱含文件。進入該目錄后若找到該文件,將其刪除,然后重新啟動Windows,系統會自動重建圖標緩存文件(圖2)。
3. 更新官方顯示驅動程序
顯示設備驅動程序出問題也可能造成桌面顯示問題。請從硬件官方網站將圖形顯示設備驅動更新為最新版。也可以通過在設備管理器中更新顯示設備驅動程序,或先刪除顯示設備,然后刷新并重新安裝顯示驅動程序來解決。具體方法為,右鍵單擊開始按鈕并選擇“設備管理器”,然后展開“顯示適配器”分支,選中顯示適配器項目,右鍵單擊并選擇“更新驅動程序”(必須在聯網狀態);或者先點擊“卸載設備”,然后再刷新設備驅動列表,讓系統自動掃描顯示驅動并安裝(圖3)。
4. 更換不同的顯示分辨率
顯示分辨率設置的改變也可能會影響桌面圖標的正常顯示。為此,通過右鍵單擊桌面空白處,從彈出菜單中選擇“顯示設置”(圖4);
隨后,通過選擇“分辨率”下拉列表中的不同數據,或對“更改文本、應用等項目的大小”列表中的百分比進行選擇,查看改變顯示分辨率或顯示百分比之后,桌面圖標是否歸于正常(圖5)。
5. 阻止主題改變桌面圖標
如果系統中采用了不合適的主題,也可能會造成桌面顯示混亂。這時,需要通過設置阻止系統主題改變桌面圖標。具體方法:通過系統設置窗口,依次選擇“個性化→主題”,然后點擊右側窗格中的“桌面圖標設置”(圖6);
在隨后出現的桌面圖標設置窗口中,將左下角“允許主題更改桌面圖標”選項的勾選去掉,然后點擊“確定”(圖7)。
6. 通過干凈啟動狀態試錯
如果上述操作均不能發揮作用,可嘗試通過干凈啟動來測試并逐一試錯,找到問題發生的部位。具體操作方法是,先通過Win+R組合鍵啟動“運行”對話框,執行MSCONFIG系統命令,進入系統配置窗口。在“常規”選項卡下的“有選擇的啟動”分組項目中,取消“加載啟動項”選擇,并保證“使用原有引導配置”和“加載系統服務”兩個項被選中(圖8)。
切換到“服務”選項卡,選中底部的“隱藏所有Microsoft服務”選項;對列表中顯示出的其他服務,點擊“全部禁用”按鈕加以禁用(圖9)。點擊“應用”并確定之后,Windows以純凈的方式啟動。之后再通過逐個嘗試打開非系統服務并啟動到桌面,即可獲知是哪個服務引起了桌面混亂。
7. 用第三方軟件恢復布局
除此之外,我們還可以借助于第三方軟件,對桌面圖標做備份處理,以便在圖標發生混亂時恢復。這是一種“保守治療”方案。首先可以使用DesktopOK軟件來保存桌面圖標布局,運行軟件后點擊工具欄上的“保存”即可;當桌面圖標發生問題之后,點擊“還原”按鈕即可恢復之前的圖標(圖10)。此外,還可以選擇另一款軟件D-Color,保存和恢復圖標布局。