計(jì)劃程序?qū)崿F(xiàn)管理員權(quán)限開(kāi)機(jī)自啟動(dòng)的完整指南)
1. 為什么“以管理員身份運(yùn)行”和“開(kāi)機(jī)自啟動(dòng)”不能兼得如果你在Windows上用過(guò)一些需要清理內(nèi)存、修改系統(tǒng)設(shè)置或者管理硬件的工具大概率遇到過(guò)這個(gè)場(chǎng)景你希望它開(kāi)機(jī)就自動(dòng)在后臺(tái)默默工作但軟件偏偏彈出一個(gè)煩人的UAC用戶賬戶控制窗口要求你點(diǎn)擊“是”才能繼續(xù)。更糟的是如果你不在電腦前這個(gè)窗口就會(huì)一直卡在那里導(dǎo)致軟件無(wú)法啟動(dòng)你的自動(dòng)化流程也就此中斷。這個(gè)問(wèn)題的核心是Windows安全機(jī)制與用戶便利性之間一個(gè)經(jīng)典的矛盾。普通用戶啟動(dòng)的程序權(quán)限是受限的無(wú)法執(zhí)行某些涉及系統(tǒng)核心的操作。而“以管理員身份運(yùn)行”則是讓程序獲得了更高的權(quán)限。Windows為了防止惡意軟件悄無(wú)聲息地獲取高權(quán)限設(shè)計(jì)了一個(gè)關(guān)鍵的安全閘門(mén)UAC提權(quán)請(qǐng)求必須要有用戶的交互確認(rèn)。當(dāng)你手動(dòng)右鍵點(diǎn)擊一個(gè)程序選擇“以管理員身份運(yùn)行”時(shí)你就是在進(jìn)行這個(gè)交互確認(rèn)。但是“開(kāi)機(jī)自啟動(dòng)”的本質(zhì)是系統(tǒng)在用戶登錄前后自動(dòng)、靜默地啟動(dòng)程序。如果自啟動(dòng)的程序要求管理員權(quán)限系統(tǒng)就會(huì)陷入兩難是冒著安全風(fēng)險(xiǎn)自動(dòng)提權(quán)還是停下來(lái)等待一個(gè)可能永遠(yuǎn)不會(huì)出現(xiàn)的用戶點(diǎn)擊Windows選擇了后者——等待。這就是為什么你設(shè)置了開(kāi)機(jī)啟動(dòng)卻只看到一個(gè)孤零零的UAC窗口掛在那里的原因。所以要實(shí)現(xiàn)“以管理員權(quán)限開(kāi)機(jī)自啟動(dòng)”我們必須找到一個(gè)方法能夠繞過(guò)“需要交互確認(rèn)”這個(gè)環(huán)節(jié)讓系統(tǒng)在無(wú)用戶干預(yù)的情況下安全地授予指定程序高權(quán)限。這聽(tīng)起來(lái)有點(diǎn)像在走鋼絲一邊要達(dá)成目的另一邊絕不能破壞系統(tǒng)的安全基線。接下來(lái)我會(huì)以一款輕量級(jí)內(nèi)存清理工具M(jìn)emReduct為例帶你走通幾種主流的、安全的實(shí)現(xiàn)路徑。2. 方案選型任務(wù)計(jì)劃程序 vs. 啟動(dòng)文件夾 vs. 注冊(cè)表在動(dòng)手之前我們先理清思路。讓程序開(kāi)機(jī)自動(dòng)運(yùn)行常見(jiàn)的方法無(wú)非三種丟進(jìn)“啟動(dòng)”文件夾、寫(xiě)進(jìn)注冊(cè)表啟動(dòng)項(xiàng)、或者使用任務(wù)計(jì)劃程序。但結(jié)合“管理員權(quán)限”這個(gè)需求它們的命運(yùn)各不相同。2.1 “啟動(dòng)”文件夾最方便但權(quán)限最低這是最廣為人知的方法。把程序的快捷方式放到C:\Users\[你的用戶名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup目錄下。系統(tǒng)登錄后會(huì)自動(dòng)運(yùn)行這里面所有的東西。優(yōu)點(diǎn)設(shè)置簡(jiǎn)單一目了然。致命缺點(diǎn)從這里啟動(dòng)的所有程序都只具有當(dāng)前登錄用戶的普通權(quán)限無(wú)法自動(dòng)獲得管理員權(quán)限。對(duì)于MemReduct這類(lèi)需要清理系統(tǒng)級(jí)內(nèi)存的軟件它可能會(huì)啟動(dòng)但執(zhí)行清理操作時(shí)很可能因權(quán)限不足而失敗或者功能受限。所以如果你需要的是真正的管理員權(quán)限啟動(dòng)文件夾方案在第一回合就被淘汰了。2.2 注冊(cè)表啟動(dòng)項(xiàng)更底層但同樣受制于權(quán)限另一種常見(jiàn)方法是修改注冊(cè)表在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run或HKEY_LOCAL_MACHINE\...\Run下添加一個(gè)字符串值指向程序路徑。HKCU\...\Run和啟動(dòng)文件夾效果幾乎一樣以當(dāng)前用戶權(quán)限運(yùn)行。HKLM\...\Run理論上在更早的階段用戶登錄前由系統(tǒng)啟動(dòng)權(quán)限上下文是“SYSTEM”或指定用戶。聽(tīng)起來(lái)很強(qiáng)大但這里有個(gè)關(guān)鍵點(diǎn)即使在這里指定如果程序本身請(qǐng)求管理員權(quán)限在Manifest中聲明了requireAdministrator在交互式桌面準(zhǔn)備就緒后它依然會(huì)觸發(fā)UAC提示。HKLM\Run并不能自動(dòng)繞過(guò)UAC對(duì)交互式程序的提權(quán)要求。因此注冊(cè)表方案對(duì)于需要提權(quán)的程序也不是一個(gè)完美的解決方案。2.3 任務(wù)計(jì)劃程序唯一的“正規(guī)軍”繞了一圈我們發(fā)現(xiàn)Windows官方留給我們的、能夠?qū)崿F(xiàn)“無(wú)交互提權(quán)”的合法通道其實(shí)就是“任務(wù)計(jì)劃程序”。它可以創(chuàng)建在系統(tǒng)啟動(dòng)時(shí)、用戶登錄時(shí)等特定觸發(fā)器下運(yùn)行的任務(wù)并且可以精確配置運(yùn)行時(shí)的安全上下文包括“以最高權(quán)限運(yùn)行”。核心優(yōu)勢(shì)可以配置“以最高權(quán)限運(yùn)行”這是解決UAC提示的關(guān)鍵。任務(wù)計(jì)劃程序在觸發(fā)任務(wù)時(shí)可以模擬一個(gè)已授權(quán)的上下文來(lái)啟動(dòng)程序從而跳過(guò)交互式確認(rèn)。觸發(fā)器靈活不僅可以“開(kāi)機(jī)時(shí)”或“用戶登錄時(shí)”觸發(fā)還可以定時(shí)、閑置時(shí)、特定事件發(fā)生時(shí)觸發(fā)。運(yùn)行賬戶可指定可以設(shè)置為以“SYSTEM”賬戶最高系統(tǒng)權(quán)限或其他特定用戶賬戶運(yùn)行即使該用戶未登錄。隱藏運(yùn)行可以設(shè)置任務(wù)運(yùn)行時(shí)窗口不可見(jiàn)真正實(shí)現(xiàn)后臺(tái)靜默。所以我們的結(jié)論很明確要實(shí)現(xiàn)“以管理員權(quán)限開(kāi)機(jī)自啟動(dòng)”任務(wù)計(jì)劃程序是唯一可靠且推薦的方法。下面我們就手把手用它來(lái)配置MemReduct。3. 實(shí)戰(zhàn)使用任務(wù)計(jì)劃程序配置MemReductMemReduct是一款我非常喜歡用的輕量級(jí)內(nèi)存清理工具它需要管理員權(quán)限來(lái)執(zhí)行深層的內(nèi)存整理。我們目標(biāo)是讓它開(kāi)機(jī)后自動(dòng)靜默清理內(nèi)存。3.1 創(chuàng)建基本任務(wù)按下Win R輸入taskschd.msc回車(chē)打開(kāi)“任務(wù)計(jì)劃程序”。在右側(cè)操作欄點(diǎn)擊“創(chuàng)建基本任務(wù)...”。雖然名字叫“基本”但功能足夠我們使用。名稱和描述名稱可以起為“MemReduct AutoStart”描述寫(xiě)“開(kāi)機(jī)自動(dòng)運(yùn)行MemReduct并清理內(nèi)存”方便日后管理。觸發(fā)器選擇“當(dāng)計(jì)算機(jī)啟動(dòng)時(shí)”。注意這里指的是操作系統(tǒng)啟動(dòng)而不是用戶登錄。這意味著MemReduct會(huì)在你看到登錄屏幕之前就嘗試啟動(dòng)以SYSTEM賬戶或你指定的賬戶。對(duì)于需要在用戶桌面環(huán)境就緒后運(yùn)行的工具選“當(dāng)用戶登錄時(shí)”更合適。但MemReduct清理的是系統(tǒng)全局內(nèi)存開(kāi)機(jī)啟動(dòng)沒(méi)問(wèn)題。我們這里選擇“當(dāng)計(jì)算機(jī)啟動(dòng)時(shí)”。操作選擇“啟動(dòng)程序”。程序或腳本點(diǎn)擊瀏覽找到你的MemReduct主程序通常是memreduct.exe。添加參數(shù)可選這是關(guān)鍵一步為了讓MemReduct啟動(dòng)后自動(dòng)清理并最小化我們需要添加參數(shù)。查閱MemReduct的幫助或通過(guò)memreduct.exe /?查看通常支持以下參數(shù)/tray啟動(dòng)后直接最小化到系統(tǒng)托盤(pán)。/clean啟動(dòng)后立即執(zhí)行一次內(nèi)存清理。 我們可以在“添加參數(shù)”框里輸入/tray /clean。這樣它一啟動(dòng)就會(huì)清理內(nèi)存然后安靜地呆在托盤(pán)。起始于可選填寫(xiě)MemReduct程序所在的目錄路徑。這能確保程序運(yùn)行時(shí)能找到它可能需要的依賴文件。3.2 配置關(guān)鍵安全選項(xiàng)繞過(guò)UAC的核心點(diǎn)擊“下一步”后會(huì)來(lái)到一個(gè)“摘要”頁(yè)面這里一定要勾選“當(dāng)點(diǎn)擊‘完成’時(shí)打開(kāi)此任務(wù)屬性的對(duì)話框”。然后點(diǎn)擊“完成”?,F(xiàn)在任務(wù)屬性窗口打開(kāi)了我們需要調(diào)整幾個(gè)關(guān)鍵設(shè)置常規(guī)選項(xiàng)卡安全選項(xiàng)確?!安还苡脩羰欠竦卿浂家\(yùn)行”被選中。這樣計(jì)算機(jī)一啟動(dòng)就會(huì)運(yùn)行不依賴任何用戶登錄。勾選“使用最高權(quán)限運(yùn)行”這是靈魂所在這個(gè)復(fù)選框就是告訴任務(wù)計(jì)劃程序“請(qǐng)用管理員權(quán)限啟動(dòng)這個(gè)程序不要彈UAC問(wèn)我”。務(wù)必勾選。配置如果你用的是Windows 10/11桌面版就選“Windows 10”。服務(wù)器版選對(duì)應(yīng)的系統(tǒng)。觸發(fā)器選項(xiàng)卡檢查一下我們剛才創(chuàng)建的“啟動(dòng)時(shí)”觸發(fā)器??梢噪p擊它進(jìn)行微調(diào)比如可以設(shè)置“延遲任務(wù)時(shí)間”為“30秒”或“1分鐘”等系統(tǒng)啟動(dòng)更穩(wěn)定后再運(yùn)行MemReduct。操作選項(xiàng)卡再次確認(rèn)程序路徑和參數(shù)是否正確。條件選項(xiàng)卡這里可以設(shè)置一些限制條件。為了確保任務(wù)一定能運(yùn)行我通常取消勾選“只有在計(jì)算機(jī)使用交流電源時(shí)才啟動(dòng)此任務(wù)”對(duì)于筆記本也取消勾選“只有在以下網(wǎng)絡(luò)連接可用時(shí)才啟動(dòng)”除非你的程序確實(shí)需要網(wǎng)絡(luò)。我們的內(nèi)存清理顯然不需要。設(shè)置選項(xiàng)卡這里有一些重要設(shè)置允許按需運(yùn)行任務(wù)保持勾選。如果任務(wù)運(yùn)行時(shí)間超過(guò)以下時(shí)間停止任務(wù)可以設(shè)置一個(gè)時(shí)間防止程序卡死。如果任務(wù)已經(jīng)在運(yùn)行以下規(guī)則適用建議選擇“不啟動(dòng)新實(shí)例”。避免重復(fù)啟動(dòng)多個(gè)MemReduct。如果任務(wù)失敗按以下頻率重新啟動(dòng)這個(gè)很實(shí)用可以設(shè)置“每隔1分鐘重啟最多嘗試3次”。這樣如果因?yàn)槟承┰蛉缦到y(tǒng)剛啟動(dòng)資源緊張導(dǎo)致啟動(dòng)失敗它會(huì)自動(dòng)重試。過(guò)期任務(wù)和“如果運(yùn)行時(shí)間超過(guò)”保持默認(rèn)。全部設(shè)置好后點(diǎn)擊“確定”。系統(tǒng)可能會(huì)要求你輸入一次當(dāng)前用戶密碼因?yàn)槿蝿?wù)配置需要管理員權(quán)限。輸入后任務(wù)就創(chuàng)建成功了。3.3 立即測(cè)試與驗(yàn)證不要重啟電腦來(lái)測(cè)試太慢了。在任務(wù)計(jì)劃程序庫(kù)中找到你剛創(chuàng)建的“MemReduct AutoStart”任務(wù)右鍵點(diǎn)擊選擇“運(yùn)行”。如何驗(yàn)證它是否以管理員權(quán)限成功運(yùn)行了呢查看任務(wù)列表打開(kāi)任務(wù)管理器CtrlShiftEsc在“進(jìn)程”或“詳細(xì)信息”選項(xiàng)卡里找到memreduct.exe。右鍵點(diǎn)擊它選擇“轉(zhuǎn)到詳細(xì)信息”。在“詳細(xì)信息”選項(xiàng)卡里查看該進(jìn)程的“用戶名”一列。如果顯示的是“SYSTEM”或者你的用戶名后面沒(méi)有“(低完整性)”等字樣而是一個(gè)普通的用戶標(biāo)識(shí)通常就意味著它擁有了較高的權(quán)限非沙盒或低權(quán)限狀態(tài)。觀察程序行為MemReduct應(yīng)該會(huì)啟動(dòng)系統(tǒng)托盤(pán)出現(xiàn)它的圖標(biāo)并且你應(yīng)該能觀察到內(nèi)存使用量有一個(gè)明顯的下降如果之前內(nèi)存占用高的話這說(shuō)明/clean參數(shù)生效了。檢查任務(wù)歷史回到任務(wù)計(jì)劃程序右鍵點(diǎn)擊你的任務(wù)選擇“屬性”然后查看“歷史記錄”選項(xiàng)卡。如果顯示操作成功完成事件ID 201那就一切順利。4. 進(jìn)階技巧與深度避坑指南按照上面的步驟90%的情況下問(wèn)題就解決了。但剩下的10%才是真正體現(xiàn)經(jīng)驗(yàn)的地方。下面這些坑我?guī)缀趺恳粋€(gè)都踩過(guò)。4.1 “啟動(dòng)時(shí)” vs. “登錄時(shí)”觸發(fā)器的微妙差異我前面選擇了“當(dāng)計(jì)算機(jī)啟動(dòng)時(shí)”。這會(huì)讓MemReduct在非常早的階段Windows服務(wù)啟動(dòng)階段就以SYSTEM權(quán)限運(yùn)行。這帶來(lái)兩個(gè)影響優(yōu)點(diǎn)權(quán)限極高幾乎可以執(zhí)行任何操作不依賴任何用戶會(huì)話。潛在問(wèn)題程序可能無(wú)法訪問(wèn)“當(dāng)前用戶”的配置文件或資源。比如如果MemReduct想把日志寫(xiě)到C:\Users\[用戶名]\AppData\...它可能找不到路徑因?yàn)榇藭r(shí)沒(méi)有用戶登錄。對(duì)于MemReduct這種單純清理內(nèi)存的工具這通常不是問(wèn)題。但如果你配置的是其他需要訪問(wèn)用戶目錄的軟件如某些需要讀取用戶配置的代理工具就可能出錯(cuò)。解決方案如果程序需要用戶環(huán)境請(qǐng)將觸發(fā)器改為“當(dāng)用戶登錄時(shí)”。同時(shí)在“常規(guī)”選項(xiàng)卡里選擇“只在用戶登錄時(shí)運(yùn)行”并取消“使用最高權(quán)限運(yùn)行”因?yàn)榈卿浐笠栽撚脩羯矸葸\(yùn)行再勾選最高權(quán)限又會(huì)觸發(fā)UAC不這里有個(gè)關(guān)鍵在“用戶登錄時(shí)”觸發(fā)且勾選“最高權(quán)限”任務(wù)計(jì)劃程序會(huì)嘗試提權(quán)對(duì)于配置正確的任務(wù)通常能成功且不彈窗因?yàn)樗褂玫氖谴鎯?chǔ)的憑據(jù)。更穩(wěn)妥的做法是將“起始于”目錄和程序需要的所有資源路徑都改為絕對(duì)路徑并且確保SYSTEM賬戶或指定賬戶有訪問(wèn)權(quán)限。4.2 參數(shù)傳遞與工作目錄的“坑”在“操作”選項(xiàng)卡里“起始于可選”這個(gè)字段強(qiáng)烈建議填寫(xiě)不要留空。留空的后果程序的“當(dāng)前工作目錄”可能會(huì)是C:\Windows\System32或其他系統(tǒng)目錄。如果程序運(yùn)行時(shí)需要讀取同目錄下的配置文件如memreduct.ini、語(yǔ)言包或DLL文件它會(huì)在System32里找顯然找不到導(dǎo)致功能異常、界面亂碼甚至啟動(dòng)失敗。正確做法將“起始于”設(shè)置為程序所在的完整目錄路徑例如D:\Tools\MemReduct\。這能保證程序啟動(dòng)時(shí)所有相對(duì)路徑的引用都是正確的。4.3 程序本身的“請(qǐng)求執(zhí)行級(jí)別”有些程序在它的程序清單里明確聲明了requestedExecutionLevel levelrequireAdministrator/。這意味著它強(qiáng)制要求以管理員身份運(yùn)行。對(duì)于這類(lèi)程序即使用普通方式雙擊也會(huì)觸發(fā)UAC。我們的任務(wù)計(jì)劃程序方法勾選最高權(quán)限正是為了解決這個(gè)問(wèn)題。但還有一類(lèi)程序清單里是asInvoker以調(diào)用者權(quán)限運(yùn)行。這類(lèi)程序是否提權(quán)取決于調(diào)用它的方式。通過(guò)任務(wù)計(jì)劃程序以高權(quán)限調(diào)用它它就能獲得高權(quán)限。MemReduct屬于后者所以我們的方法有效。如何查看你可以使用第三方工具如SigcheckSysinternals套件里的來(lái)檢查sigcheck.exe -m memreduct.exe然后在輸出里搜索requestedExecutionLevel。4.4 隱藏運(yùn)行與交互式問(wèn)題在任務(wù)屬性的“常規(guī)”選項(xiàng)卡里如果你選擇了“不管用戶是否登錄都要運(yùn)行”下面會(huì)有一個(gè)“隱藏”的選項(xiàng)Do not store password. The task will only have access to local computer resources.。這個(gè)選項(xiàng)的表述有點(diǎn)誤導(dǎo)。如果勾選“隱藏”任務(wù)將完全在后臺(tái)運(yùn)行沒(méi)有UI界面。這對(duì)于MemReduct是致命的因?yàn)镸emReduct需要顯示托盤(pán)圖標(biāo)這是一個(gè)UI組件。如果隱藏運(yùn)行托盤(pán)圖標(biāo)不會(huì)出現(xiàn)你甚至無(wú)法知道它是否在運(yùn)行更別說(shuō)右鍵點(diǎn)擊它進(jìn)行設(shè)置了。如果不勾選“隱藏”并且觸發(fā)器是“啟動(dòng)時(shí)”用戶未登錄那么程序?qū)嶋H上會(huì)在一個(gè)不可見(jiàn)的桌面會(huì)話Session 0中運(yùn)行。從Windows Vista開(kāi)始Session 0與用戶交互桌面Session 1, 2...隔離。這意味著即使程序有UI用戶也看不到。對(duì)于MemReduct這通常意味著你看不到它的托盤(pán)圖標(biāo)但進(jìn)程存在且可能正常工作清理內(nèi)存。這算是一個(gè)折中。最佳實(shí)踐對(duì)于像MemReduct這樣需要托盤(pán)圖標(biāo)進(jìn)行交互的軟件更好的觸發(fā)器是“當(dāng)用戶登錄時(shí)”并且不勾選“隱藏”。這樣程序會(huì)在你登錄后的用戶會(huì)話中啟動(dòng)擁有完整的UI交互能力同時(shí)通過(guò)任務(wù)計(jì)劃程序的配置獲得管理員權(quán)限。4.5 任務(wù)計(jì)劃程序的歷史記錄是你的最佳拍檔出了問(wèn)題別慌第一個(gè)要去的地方就是任務(wù)計(jì)劃程序里的“歷史記錄”。右鍵任務(wù) - 屬性 - 歷史記錄。事件ID 201操作成功完成。皆大歡喜。事件ID 200操作已啟動(dòng)。事件ID 203操作失敗。這是最需要關(guān)注的。點(diǎn)開(kāi)它看詳細(xì)信息。常見(jiàn)的失敗原因有0x80070002: 系統(tǒng)找不到指定的文件。檢查程序路徑是否正確特別是路徑中是否有空格需要用引號(hào)括起來(lái)嗎在“程序或腳本”框里如果路徑有空格系統(tǒng)會(huì)自動(dòng)加引號(hào)一般不用手動(dòng)加。0x80070005: 拒絕訪問(wèn)。權(quán)限問(wèn)題。檢查運(yùn)行賬戶是否有權(quán)執(zhí)行該程序、訪問(wèn)該目錄。0x8007007E: 找不到指定的模塊。通常是工作目錄不對(duì)導(dǎo)致依賴的DLL找不到。請(qǐng)務(wù)必填寫(xiě)“起始于”目錄。0x1: 錯(cuò)誤的函數(shù)?;?xC0000142: 應(yīng)用程序無(wú)法正確啟動(dòng)。這通常和程序參數(shù)或運(yùn)行環(huán)境有關(guān)。學(xué)會(huì)看歷史記錄你就能自己診斷大部分任務(wù)計(jì)劃程序相關(guān)的問(wèn)題。5. 替代方案與邊界場(chǎng)景探討雖然任務(wù)計(jì)劃程序是官方推薦的正解但了解其他方法的邊界和“野路子”的局限能讓你在遇到特殊場(chǎng)景時(shí)更有把握。5.1 利用系統(tǒng)服務(wù)不推薦用于普通GUI程序Windows服務(wù)Service是在后臺(tái)長(zhǎng)期運(yùn)行、沒(méi)有用戶界面的程序通常以SYSTEM權(quán)限運(yùn)行。理論上我們可以把MemReduct包裝成一個(gè)服務(wù)。為什么極其不推薦服務(wù)的設(shè)計(jì)初衷是無(wú)UI、長(zhǎng)期運(yùn)行、響應(yīng)系統(tǒng)事件。像MemReduct這樣的圖形界面程序強(qiáng)行注冊(cè)為服務(wù)會(huì)遇到無(wú)數(shù)問(wèn)題無(wú)法與用戶桌面交互Session 0隔離、消息循環(huán)異常、資源釋放困難等。需要復(fù)雜的“交互式服務(wù)”配置且從Windows Vista后受到嚴(yán)格限制極不穩(wěn)定。工具雖然有NSSM(Non-Sucking Service Manager) 這類(lèi)第三方工具可以方便地將任何exe封裝成服務(wù)但用于GUI程序依然是 hacky 的做法容易導(dǎo)致程序卡死、無(wú)法退出等問(wèn)題。僅作為知識(shí)了解強(qiáng)烈不建議對(duì)GUI程序使用。5.2 修改程序清單治標(biāo)不治本理論上我們可以用資源編輯工具如mt.exe或第三方工具修改程序的exe文件將其清單中的requestedExecutionLevel從asInvoker或requireAdministrator改為highestAvailable或asInvoker甚至移除該聲明。風(fēng)險(xiǎn)極高這破壞了程序的原始簽名如果存在可能觸發(fā)殺毒軟件警報(bào)。更嚴(yán)重的是這改變了程序作者的設(shè)計(jì)意圖。如果程序某些功能確實(shí)需要管理員權(quán)限才能正常工作如MemReduct的深層清理你降權(quán)后可能導(dǎo)致功能失效或出錯(cuò)。法律與安全風(fēng)險(xiǎn)修改他人的可執(zhí)行文件可能違反軟件許可協(xié)議也存在引入惡意代碼的風(fēng)險(xiǎn)。絕對(duì)不要這樣做。5.3 使用自動(dòng)登錄啟動(dòng)文件夾的“曲線救國(guó)”極不安全這是一個(gè)非常糟糕的主意在系統(tǒng)中設(shè)置自動(dòng)登錄將用戶名和密碼明文或加密存儲(chǔ)在注冊(cè)表然后讓程序通過(guò)啟動(dòng)文件夾運(yùn)行。因?yàn)樽詣?dòng)登錄后程序以用戶身份啟動(dòng)如果該用戶是管理員組成員程序可以請(qǐng)求提權(quán)但第一次運(yùn)行時(shí)依然會(huì)彈出UAC除非你徹底關(guān)閉UAC極度危險(xiǎn)否則問(wèn)題依舊。而關(guān)閉UAC等同于將系統(tǒng)大門(mén)完全敞開(kāi)是嚴(yán)重的安全隱患。在任何生產(chǎn)環(huán)境或個(gè)人電腦上都不應(yīng)禁用UAC或使用自動(dòng)登錄存儲(chǔ)密碼。6. 舉一反三這套方法還能用在哪兒掌握了任務(wù)計(jì)劃程序這個(gè)利器你就能讓很多需要權(quán)限的工具實(shí)現(xiàn)自動(dòng)化。思路都是一樣的創(chuàng)建任務(wù) - 設(shè)置觸發(fā)器啟動(dòng)/登錄/定時(shí)- 配置最高權(quán)限 - 填寫(xiě)正確的路徑和參數(shù)。自動(dòng)化維護(hù)腳本編寫(xiě)一個(gè)PowerShell或批處理腳本用于定期清理臨時(shí)文件、檢查磁盤(pán)健康、備份特定目錄。創(chuàng)建一個(gè)每天凌晨3點(diǎn)運(yùn)行的最高權(quán)限任務(wù)來(lái)執(zhí)行它。網(wǎng)絡(luò)工具有些網(wǎng)絡(luò)診斷或配置工具需要管理員權(quán)限才能抓包或修改路由表??梢詣?chuàng)建一個(gè)在檢測(cè)到網(wǎng)絡(luò)連接后觸發(fā)的任務(wù)來(lái)運(yùn)行它們。開(kāi)發(fā)/測(cè)試環(huán)境需要隨系統(tǒng)啟動(dòng)一個(gè)本地?cái)?shù)據(jù)庫(kù)如MySQL、消息隊(duì)列如RabbitMQ的服務(wù)進(jìn)程。雖然它們通常作為服務(wù)安裝更好但對(duì)于一些綠色版或測(cè)試版也可以用任務(wù)計(jì)劃程序來(lái)啟動(dòng)并賦予其訪問(wèn)所需文件資源的權(quán)限。硬件監(jiān)控工具一些CPU/GPU超頻、風(fēng)扇控制軟件需要底層硬件訪問(wèn)權(quán)限。通過(guò)任務(wù)計(jì)劃程序設(shè)置登錄后啟動(dòng)可以確保它們每次都能獲得所需權(quán)限。最后的關(guān)鍵提醒權(quán)力越大責(zé)任越大。讓程序以最高權(quán)限自動(dòng)運(yùn)行意味著你對(duì)它的安全性負(fù)有全部責(zé)任。請(qǐng)只對(duì)你完全信任的、來(lái)源正規(guī)的軟件使用此方法。定期檢查任務(wù)計(jì)劃程序庫(kù)清理不再需要的自動(dòng)任務(wù)是保持系統(tǒng)整潔和安全的好習(xí)慣。通過(guò)任務(wù)計(jì)劃程序你找到了Windows系統(tǒng)下自動(dòng)化與權(quán)限管理的平衡點(diǎn)現(xiàn)在你可以讓那些得力助手在后臺(tái)默默為你工作了。