我想存储几个字符串,以便在我的应用程序中使用。但我不想将其存储在我的数据库或Config中。原因是如果有人从一个复制应用程序,我想要…
简单的解决方案,在用户文档中创建一个文件并在那里存储字符串。它简单易行,但不提供任何安全性。如果您要存储敏感信息,那么任何人都可以阅读它。用户也可以删除导致文件未找到异常的文件。
第二种选择是将其写在注册表中。这既不难也不简单。 Registry将解决文件的安全问题。用户不会意外删除注册表。
一种方法是加密你的 string 用一个 key 这是该机器的本地例如 MAC address ,同时将其保存在机器上。显然要使用它,你必须阅读它,然后使用相同的密钥解密它。
string
key
MAC address
这种方式即使将字符串复制到另一个系统,新系统也无法解密和使用 string ,因为它没有相同 key 作为原始机器。
此解决方案与您是否决定将字符串存储在bin或app数据或系统中的其他位置无关。
你可以使用注册表来做这样的事情。
我有一个Registry-Helper-Class来执行这样的操作:
public class RegistryUtils { public static string Read(string subKey, string keyName) { RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(subKey, true); if (registryKey == null) { registryKey = Registry.CurrentUser.CreateSubKey(subKey, true); } var keyValue = registryKey.GetValue(keyName); registryKey.Close(); return keyValue.ToString(); } public static void Write(string subKey, string keyName, string keyValue) { RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(subKey, true); if (registryKey == null) { registryKey = Registry.CurrentUser.CreateSubKey(subKey, true); } registryKey.SetValue(keyName, keyValue); registryKey.Close(); } }
然后你可以使用这个类存储这样的东西:
var storedValue = RegistryUtils.Read("MY_COMPANY/MY_PRODUCT","MY_STORED_VALUE"); RegistryUtils.Write("MY_COMPANY/MY_PRODUCT", "MY_STORED_VALUE", storedValue);
您可以使用它来存储任何类型的值,而不仅仅是字符串。但是这不应该用于敏感数据,因为用户可以使用注册表编辑器读取和写入注册表的值。