2012-03-14 70 views
0

我試圖將用戶註冊數據保存到c#註冊表中。但沒有管理權限,我無法訪問HKEY_LOCAL_MACHINE。我沒有管理員權限,所以我決定將其存儲在HKEY_CURRENT_USER分支中。在c#中註冊表的HKEY_CURRENT_USER分支存儲授權信息

這種方法是否正確,即如果用戶註冊產品並且他在Windows中切換帳戶,則應用程序將被取消註冊。商業軟件是否使用HKEY_CURRENT_USER分支來存儲用戶的許可證密鑰。由於許可證是針對單個用戶的,因此如果我只允許單個用戶(Windows用戶)使用該密鑰以防止其他用戶使用該密鑰,那麼會出現問題。

回答

3

爲什麼不節省一些key文件與用戶特定的許可協議中

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

運行程序的用戶可以訪問由系統本身授予的位置。

0

當用戶激活產品時,您可以提升進程,以便允許對HKLM的寫入訪問。

根據您的許可證模式,我建議每臺機器註冊產品,因爲這樣不同的用戶都可以使用許可證。

但是,如果您只想讓原始用戶使用許可證,那麼HKCU就沒有問​​題。

0

我傾向於遠離註冊表,除非我可以幫助它。如果您銷售您的產品,這種方式很容易被盜版,儘管可能沒有可能的防盜版方式,我不推薦使用註冊表。

我之前使用過的一種方法是將許可證密鑰保存在應用程序的app.config中。然後它與應用程序一起編譯,所以你沒有任何特定的計算機依賴。當你的應用程序被激活時,密鑰被保存在配置文件中,並且在應用程序的每次開啓時,它只是執行一次布爾檢查來查看它是否有效。

這種方式也會讓精通計算機的用戶更難以盜用您的軟件。

希望這會有所幫助。