是什麼應用程序在保存設置VS註冊表
Properties.Settings.Default
存儲用戶設置之間的差異與存放在註冊表中說
HKEY_CURRENT_USER\Software\{Application Name}
是什麼應用程序在保存設置VS註冊表
Properties.Settings.Default
存儲用戶設置之間的差異與存放在註冊表中說
HKEY_CURRENT_USER\Software\{Application Name}
保存像Properties.Settings.Default這樣的設置是唯一正確的方法。
註冊表是一個不可用的。您不確定使用您的應用程序的用戶是否具有足夠的權限來寫入註冊表。
難道你不總是有足夠的權限從已安裝的應用程序寫入hkey_current_user嗎? –
那麼,理論上你應該對HKEY_CURRENT_USER有足夠的權利。儘管如此,它仍然可以使用正確的API。 – duDE
區別在於註冊表是註冊表。而Properties.Settings.Default保存到您的AppData目錄中的配置文件。
我個人不喜歡與註冊局合作。這只是我從Windows 98時代遺留下來的恐懼症。無論如何,使用註冊表並不是一個好的體驗。關鍵的名字很難看,並且有很多潛在的混亂。
的.NET Framework應用程序設置之前被保存在INI文件 和Windows註冊表。但是.NET框架使用XML文件引入了更簡單的方法。該文件的名稱爲程序集 和.exe.config擴展名,並位於應用程序的 文件夾內。這種方式更清潔,因爲當應用程序被卸載時 或被刪除,最終用戶不必擔心在Windows目錄中留下 註冊表項或INI文件。
Properties.Settings.Default
,用於存儲執行之間的應用程序狀態的一種常用技術是將其寫入到磁盤。有很多種方法可以做到這一點,微軟通過在System.Configuration命名空間中引入類來幫助用戶管理保存應用程序狀態(設置),從而加入到遊戲中。
Properties.Settings.Default
是從ApplicationSettingBase它管理的設置保存到磁盤的讀取和寫入派生類的靜態實例。使用[UserScopedSetting]
屬性標記的屬性將保存到C:\ Users \ user \ AppData \ Local \ ComapnyName \ Hashed_AppName \版本中的XML文件,該文件可由用戶讀取和寫入。用[ApplicationScopedSetting]
屬性標記的合適的文件被保存到app.config文件並且只能被讀取。
基本設置文件看起來是這樣的:
class FormSettings : ApplicationSettingsBase
{
public WindowSettings() {}
public WindowSettings(string settingsKey) : base(settingsKey) {}
[UserScopedSettingAttribute()]
[DefaultSettingValueAttribute("MyDefaultName")]
public String Name
{
get { return (string)(this["Name"]); }
set { this["Name"] = value; }
}
}
可以在Properties.Settings.Default
設定值,無論是在用戶界面中,在項目屬性 - >設置或programattically通過Properties.Settings.Default
。
註冊
註冊表是存儲配置設置和選項,並存儲這些它們作爲鍵值對層次數據庫。有關更多信息,請參閱Wikipedia。
可以通過靜態Microsoft.Win32.Registry類來訪問註冊表,該類允許您讀取和寫入值。例如:
public class RegistryExample
{
public static void Main()
{
const string rootUser = "HKEY_CURRENT_USER";
const string subkey = "RegistryExample";
const string keyName = String.Format("{0}\\{1}, userRoot, subkey);
Registry.SetValue(keyName, "MyRegistryValue", 1234);
}
}
請參閱MSDN文檔頁面中的示例。正如其他人所說的那樣,使用註冊表有其優點和缺點,但我認爲值得再次說明的是,註冊表是一個「安全」的位置,您的用戶將需要從其中讀取寫入的權限,因爲設置文件不需要那些權限。
我們能否提出一個要求,爲了將問題標記爲重複,您必須選擇它重複的問題,以便將它鏈接到此處?回到搜索頁面並記住哪些問題在重複搜索時沒有重複,這是非常令人沮喪的。 – jvance