時間:2018-03-23 來源:互聯網 瀏覽量:
在去年的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文件即可。
執行該批處理文件時請右鍵選擇“以管理員的身份運行”
之後係統會自動彈出命令提示符窗口執行啟用組策略的命令,執行完畢後按任意鍵關閉窗口
然後我們就可以在家庭版係統上使用組策略啦,剩下的步驟和專業版相同,這裏就不多囉嗦了
副作用:部分安裝程序重啟後需要手動運行
我們前麵通過禁用RunOnce的方法來達到禁止開機啟動上次未關閉程序的效果,這樣相當於將RunOnce功能給禁用掉了,一些需要依賴RunOnce的軟件安裝程序在重啟後也會出現無法自動打開的情況,需要我們手動運行。
還是以更新Realtek聲卡驅動為例,當我們運行Realtek驅動安裝程序後,會出現安裝選項說明,告知我們安裝程序會分兩個步驟進行,首先安裝程序會卸載掉目前正在使用的舊版驅動,然後重啟後自動安裝新版驅動
因為RunOnce功能被禁用掉了,所以在第二步重啟後安裝程序不會自動打開並安裝新版驅動,需要我們手動再打開一遍安裝程序方可。
作者:隔壁張叔叔