SmartScreen功能原本是為了保護使用者不進入危險或仿冒的網站的,在Windows 8當中,這功能已經被系統接受。如果你開啟一個從網路上面下載的程式,就會得到以下提示:
系統會在開啟檔案的時候檢查該檔案,如果不符合某些規則就彈出提示框。筆者最開始在使用Windows 8 的時候就被這樣的提示迷惑了,認為程式壞掉了。其實是系統對於檔案的處理不同了。網路上關於關閉它的方法也就很多,這裡不是重點,我們來看看到底是檔案的什麼地方會讓系統認為它不安全。
對於其點擊右鍵,可以發現在屬性當中的最下面多了一小部分(紅色框):
提示我們這個檔案是從別的地方擷取到的,因此為了安全,系統自動鎖上了,點擊按鈕就可以解鎖並正常訪問了,之後也不會再次提醒。在學習NTFS的時候發現了其中的秘密:系統使用一個特殊的檔案流來儲存這個資訊,而使用普通方法是看不到這樣的內容。而該檔案流的流名字是Zone.Identifier,大小隻有20來位元組,查看的話需要使用命令提示字元來進行,在命令提示字元當中輸入:
more < IFEO_V2.exe:Zone.Identifier
就會看到如下內容:
[ZoneTransfer]
ZoneId=3
這其實就是一個標識符,其中ZoneId代表了所在的地區。這裡的地區是對應於IE當中的地區設定,1代表受信任的網站,2代表本地Intranet,3代表Internet,4代表受限制的網站。根據預設設定,1和2都可以正常使用而沒有提示,3就會得到如上提示。如果ZoneId為4就會得到下面的錯誤資訊:
系統認為這是一個不信任的程式,因此系統拒絕開啟該檔案。在此,除非手動解鎖或者調整安全設定,這個程式是運行不了的。
微軟提供了一個查看檔案流的工具: streams.exe 使用該工具可以查看某些檔案或檔案夾的檔案流,它可以列出流的大小和名字等詳細資料。查看一個檔案流具體內容使用 “more < 檔案名稱:流名稱”即可(不含引號)。由於Windows當中要求檔案名稱不能包含冒號,所以使用常用的傳統型程式是無法開啟該流裡邊的內容的。