如何在注册表中存储SecureString?

时间:2011-06-02 15:49:19

标签: .net windows registry

我想在注册表中存储System.SecureString。那可能吗?我该怎么做呢?

我的程序在下次运行时能否再次解密字符串?

2 个答案:

答案 0 :(得分:2)

如果没有辅助层,则无法以加密形式进行操作。它本身并不支持任何形式的序列化,实际上甚至无法以其原生形式进行检查。要从中获取任何信息,您需要通过PInvoke或SecureStringToBSTR API。这两种方法都可以让您以未加密的形式访问string

我能看到这种方法的一种方式是

  1. 通过SecureString
  2. BSTR转换为SecureStringToBSTR
  3. 加密BSTR
  4. 将结果存储在注册表中
  5. 当然,您需要使用可在程序实例之间重复使用的加密机制。

答案 1 :(得分:1)

查看MSDN中的Storing Private Data文章。您必须pInvoke LsaStorePrivateData()调用。