程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c# 追蹤settings文件

c# 追蹤settings文件

編輯:C#入門知識

在網上有很多人問到settings文件存放的位置,本人看了一些文章都沒有給出明確的答案,所以讓我們一起來追蹤settings 文件到底存放在什麼位置,它是否存在加密保護。

   settings 為設置文件,其功能類似於app.config 文件,但相比app.config settings 結構相對簡單,它只有名稱、類型、范圍、值四個屬性,並且不能更改結構(當然是在一般情況下,如要修改結構可以通過其它的方式)

   我們都知道app.config 文件在生成或debug後都會保存在相對的目錄下應用文件名.exe.config(窗口程序)

   問題來了,項目中的 pro.settings 編譯後卻找不到對應的文件。

   在程序代碼中修改設置的內容。代碼如下:
LoginSet.Default.IsSaveLog = true;  
LoginSet.Default.LogName = "testUser";  
LoginSet.Default.LogPassWord = "test";  
LoginSet.Default.IpAddress =  "127.0.0.1";  
LoginSet.Default.Save(); 
                    LoginSet.Default.IsSaveLog = true;
                    LoginSet.Default.LogName = "testUser";
                    LoginSet.Default.LogPassWord = "test";
                    LoginSet.Default.IpAddress =  "127.0.0.1";
                    LoginSet.Default.Save();

  在程序中修改了事先定義的幾個測試值, 關掉程序後,重新啟動設置值確實更改成功,那就表明 settings 是存放在磁盤上的。

  開始尋找它的位置->

          可以肯定settings文件的存放沒有在執行程序的目錄下,所以估計是保存在系統盤的臨時目錄下。

          做一次簡單測試: 將執行程序拷貝一個副本到其它目錄 再執行發現原來的設置值回到了初始狀態,這就表明和應用程序的路徑有關系,  並且副本程序,與原程序的settings 設置文件沒有沖突,可獨立使用。

         行蹤發現了,在系統盤的 C:Documents and Settings 目錄下 查找你的執行程序文件名後 發現了這樣一個文件,user.Config

  打開文件內容如下:
<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
    <userSettings>  
        <Test.LoginSet>  
            <setting name="IsSaveLog" serializeAs="String">  
                <value>True</value>  
            </setting>  
            <setting name="LogName" serializeAs="String">  
                <value>testName</value>  
            </setting>  
            <setting name="LogPassWord" serializeAs="String">  
                <value>apace</value>  
            </setting>  
            <setting name="IpAddress" serializeAs="String">  
                <value>127.0.0.1</value>  
            </setting>  
        </Test.LoginSet>  
    </userSettings>  
</configuration> 
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <Test.LoginSet>
            <setting name="IsSaveLog" serializeAs="String">
                <value>True</value>
            </setting>
            <setting name="LogName" serializeAs="String">
                <value>testName</value>
            </setting>
            <setting name="LogPassWord" serializeAs="String">
                <value>apace</value>
            </setting>
            <setting name="IpAddress" serializeAs="String">
                <value>127.0.0.1</value>
            </setting>
        </Test.LoginSet>
    </userSettings>
</configuration>

找到了這正是我們需要查找的文件。

總結: 該文件的發現 得到一個結論,.Net 程序運行時都會拷貝一個副本到當前用戶的臨時目錄下,零時目錄名是不確定的,但前部分可以確定,本人默認目錄是:C:Documents and SettingsAdministratorLocal SettingsApplication Data????\test.exe_Url_hgfoy0r3bz1vyaqbme2dl1uefmet0wso1.0.0.0

  

         C:Documents and SettingsAdministratorLocal SettingsApplication Data 這個是固定的,但會根據 不同用戶 Administrator有所變化

         ???? 是本人的系統版本

         test.exe 應用程序名

         Url_hgfoy0r3bz1vyaqbme2dl1uefmet0wso 這串代碼是根據你應用程序生成的MD5碼值

        1.0.0.0 為程序版本號

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved