我使用 API 调用来advapi32.dll
管理 Windows 保存的凭据,以便自动化某些可以使用保存的凭据的 Windows 应用程序,这工作正常。
我正在尝试更新我的代码以SecureString
始终用于密码,因为我不需要在任何时候与密码中包含的文本进行交互,因此如果我的应用程序从不以纯文本形式保存密码,它应该更安全。
我能够将 SecureString 编组到 COM 任务分配器内存以传递给 API 调用:
var unmanagedPassword = Marshal.SecureStringToCoTaskMemUnicode(userCredential.Password);
SecureString
但是,当将该信息读回应用程序时,如果不将字符串复制到托管内存中,无论是作为字符串还是字节数组,我都找不到将这种非托管字符串编组回 a 的方法。
有没有一种我忽略的安全方法可以做到这一点?