在網上有很多人問到settings文件存放的位置,本人看了一些文章都沒有給出明確的答案,所以讓我們一起來追蹤settings 文件到底存放在什麼位置,它是否存在加密保護。
settings 爲設置文件,其功能類似於app.config 文件,但相比app.config settings 結構相對簡單,它只有名稱、類型、範圍、值四個屬性,並且不能更改結構(當然是在一般情況下,如要修改結構可以通過其它的方式)
我們都知道app.config 文件在生成或debug後都會保存在相對的目錄下/應用文件名.exe.config(窗口程序)
問題來了,項目中的 pro.settings 編譯後卻找不到對應的文件。
在程序代碼中修改設置的內容。代碼如下:
在程序中修改了事先定義的幾個測試值, 關掉程序後,重新啓動設置值確實更改成功,那就表明 settings 是存放在磁盤上的。
開始尋找它的位置->
可以肯定settings文件的存放沒有在執行程序的目錄下,所以估計是保存在系統盤的臨時目錄下。
做一次簡單測試: 將執行程序拷貝一個副本到其它目錄 再執行發現原來的設置值回到了初始狀態,這就表明和應用程序的路徑有關係, 並且副本程序,與原程序的settings 設置文件沒有衝突,可獨立使用。
行蹤發現了,在系統盤的 C:/Documents and Settings 目錄下 查找你的執行程序文件名後 發現了這樣一個文件,user.Config
打開文件內容如下:
找到了這正是我們需要查找的文件。
總結: 該文件的發現 得到一個結論,.Net 程序運行時都會拷貝一個副本到當前用戶的臨時目錄下,零時目錄名是不確定的,但前部分可以確定,本人默認目錄是:C:/Documents and Settings/Administrator/Local Settings/Application Data/????/test.exe_Url_hgfoy0r3bz1vyaqbme2dl1uefmet0wso/1.0.0.0
C:/Documents and Settings/Administrator/Local Settings/Application Data/ 這個是固定的,但會根據 不同用戶 Administrator有所變化
???? 是本人的系統版本
test.exe 應用程序名
Url_hgfoy0r3bz1vyaqbme2dl1uefmet0wso 這串代碼是根據你應用程序生成的MD5碼值
1.0.0.0 爲程序版本號