家中的Windows 7,不知何時起開始找不到nlasvc服務,導致一連串相依服務失敗:
檢查Registry,真的找不到HKLM/STSTEM/CurrentControlSet/services/nlasvc機碼!幸好ControlSet001/services/nlasvc還在,將其匯出成nlasvc.reg檔,修改Registry路徑由ControlSet001改成CurrentControlSet再匯入。Registry補上了,但奇怪的是在服務清單仍找不到Network Location Awareness服務,用sc.exe query也找不到,糗了,這下連想測試都不得其門而入。
參考網路文章做了sfc /scannow,未發現系統檔案損壞,頓時萬念俱灰了無生趣,莫非只剩重灌一途?
隔了兩天心情稍微平復,打起精神繼續探勘。爬文找到一招:原來sc.exe不但可以啟動停止服務,還可以用"sc create svc_name binPath= x:\path\file"註冊服務。我想到一招,先sc create nlasvc binPath= x:\temp\null.exe(路徑亂打的)建立一個假的nlasvc,讓sc query nlasvc能查到服務項目,再以nlasvc.reg匯入覆寫正確機碼,我就能用sc start nlasvc啟動服務囉!此時,得到一個寶貴的錯誤訊息:
nlasvc 服務因服務特定的錯誤 %%-1073741288 而終止。
以錯誤代碼當關鍵字,找到一則Answers討論串,網友提到這是nlasvc/Parameters缺少SERVICE帳號的完全控制權限所致。
如圖補上SERVICE權限(圖中誤選SYSTEM,關鍵應為SERVICE),重新開機,一登入就出現選擇家用網路、工作場所網路或公用網路的選擇畫面(參考),意味著nlasvc修復成功,檢查事件檢視器,錯誤不見了,萬歲~