|
今天構造了一個新版本的XXXX軟體,並且在純淨的系統下進行了較為全面的測試。 測試中也發現了一些問題。其中包括在Win7測試時程式竟然在另一個目錄中建立了檔案夾和設定檔,並且進行相關讀取操作, 卻並沒有在指定的路徑(程式的安裝目錄)中進行操作。於是對這個問題進行了多次測試發現, 這個Win7或者Vista的安全機制相關。 |
一般在win7系統中會有C:\Users***\AppData\Local\VirtualStore\Program Files的檔案夾,其目的在當許可權不夠時,保證相容性的做法。
比如往program files 或某些系統目錄要寫入東西,會儲存設定檔,許可權不夠,就會被重新導向到這裡。比如往program files安裝軟體,一般安裝程式會觸發UAC提升許可權,當然不會有問題。但每次運行program files中安裝的程式都觸發UAC時不現實的,太煩人了,大多數程式運行時並不會觸發UAC,處於受限模式,但往往很多軟體運行後又會往自己目錄下儲存寫配置,臨時檔案之類的,肯定沒許可權寫入。於是都寫到了VirtualStore的目錄中去了。這裡儲存的檔案大多數是程式運行過後的一些配置或臨時檔案之類的。
UAC可以迫使開發更加規範,避免往系統目錄寫東西,配置最好放使用者自己的appdata目錄,盡量避免普通應用程式以管理員身份運行,除非程式的安裝和修改一些系統配置才需要授權,這樣才能根本上解決很多安全問題
如果開始幾次使用者都是按普通的方式運行我們的軟體(xxxxxxxx),這個時候使用者對於軟體的配置資訊都是寫入到VirtualStore中去,但後來使用者又以管理員的身份啟動並執行話,這時程式就會去讀取使用者安裝目錄下的設定檔的資訊,就會造成資訊的不一致。
【這個虛擬重新導向技術也會導致 QQ工作異常,表現為如果第一次以完整管理員權限啟動QQ,第2次沒有以標準使用者權限啟動,那麼第1次的聊天記錄將不能夠在第2次登陸以後看到。這是因為如果預設安裝在 Program Files 目錄下,一個標準使用者試圖往 Program Files 目錄下寫檔案時,系統會自動地重新導向到虛擬資料夾C:\Users\\[使用者名稱]\AppData\Local\VirtualStore\Program Files\Tencent\QQ\QQ號裡面。但是當以完整管理員權限啟動,則 QQ
進程就會擁有往 Program Files 下寫檔案的許可權,這個時候所有的配置資訊就會寫到C:\Program Files\Tencent\QQ\QQ號目錄裡面。由於這個問題,會造成QQ本地資訊不同步現象的出現。】
如何更好的解決這個檔案,是使用者的配置資訊不丟失,還有待解決。