閩人

從圖1所示的錯誤提示中可以大致判斷出這是管理員設置了某個限制條件,從而導致程序無法運行。雖然在圖1的提示中并沒有給出明確的原因,但是在Windows10系統中,程序運行出錯后都會自動記錄在系統日志中,因此我們可以通過查看日志來查找原因。不過由于現在無法運行本機中的mmc.exe,所以也就無法啟動“事件查看器”來查看日志,這時可以從下面的兩種方法中任選其一來查找原因:
一種方法是將日志文件復制到其他的電腦中查看。我們先在桌面的任務欄搜索框中輸入“mm c. exe”,再運行一次該命令,在出現圖1所示的錯誤提示時點擊“關閉”(目的是為了能查看到最新的事件記錄,便于更快速地找到對應的日志)。接著進入“C:\Windows\System32\Winevt\Logs”,將其中的“Application.ev t x”(因為是程序運行問題所以選擇該文件)傳輸到其他的電腦中(圖2),然后在該電腦中雙擊它,這時就會通過“事件查看器”打開該文件,在左側的工具欄中依次展開“保存的日志→Application”,在右側的窗格中定位到最新的警告日志,在下方的“常規”處就會給出mmc.exe無法運行的原因,是由于管理員通過路徑策略規則對其做了限制(圖3)。
另一種方法是使用PowerShell命令行來查找。在本機中以管理員身份啟動PowerShell.exe,接著輸入“Get-WinEvent-ProviderName"Microsoft-Windows-SoftwareRestrictionPolicies"|select-object-propertyMessage”并回車,從圖4中也可以看到,cmd.exe、mmc.exe等程序是被管理員通過策略規則做了限制(圖4)。

通過上面的兩種方法我們都可以找到產生問題的原因,解決的方法是通過組策略編輯器來取消對應的限制。不過由于本機無法運行mmc.exe,因此也暫時無法啟動組策略編輯器(運行組策略編輯器需要通過該程序加載gpedit.msc)。但策略的設置大多是通過在注冊表中添加或更改指定的鍵值生效的,因此我們可以先通過注冊表找到相應的鍵值,再通過刪除鍵值來恢復mmc.exe的運行。
從圖3所示的界面中可以看到,每個被限制的程序都提供了其策略規則所對應的GUID數值,比如mmc.exe對應的GUID數值為“{4ec2a0b9-359b-4cc0-9629-08f0df64fcb9}”,它實際上就是限制策略在注冊表中所對應的鍵值項,我們只要刪除它就可以了。啟動注冊表編輯器,依次點擊“編輯→查找”,在“查找目標”處輸入該GUID數值,“查看”選項下勾選“項”和“全字匹配”,然后點擊“查找下一個”(圖5),這樣會自動定位到該GUID數值所在的位置,即[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\{4ec2a0b9-359b-4cc0-9629-08f0df64fcb9}]。在右側的窗格中可以看到“ItemData”的數據就是“c:\windows\system32\mmc.exe”(這就是mmc.exe無法運行的原因),按提示右擊“ItemData”并選擇“刪除”(圖6)。
完成上述的操作后返回桌面,在任務欄搜索框中輸入“gpedit.msc”,在搜索結果中點擊“以管理員身份運行”,此時就可以正常打開組策略編輯器了(圖7)。
接著依次展開“計算機配置→Windows設置→安全設置→軟件限制策略→其他規則”,在右側的窗格中即可看到設置的規則,按提示將右側cmd.exe、mmc.exe的規則全部刪除(圖8)。重啟系統后再次運行mmc.exe,未彈出圖1所示的錯誤提示,自此順利地解決該問題。
在運行程序出錯時如果系統已經給出明確的提示,比如“你可能沒有適合的權限訪問該項目”,那就可以根據該提示去解決問題(如設置對程序的權限為“完全控制”即可)。否則不妨參照本文所介紹的方法來查找出現問題的原因,再通過原因來尋求相應的解決方案。