認証トークン (英数字) を保存および回復するためのこのコードがあります。
public static void Store (string token)
{
byte[] buffer = Encoding.UTF8.GetBytes (token.PadRight (32));
ProtectedMemory.Protect (buffer, MemoryProtectionScope.SameLogon);
Settings.Default.UserToken = buffer.ToHexString ();
Settings.Default.Save ();
}
public static string Retrieve ()
{
byte[] buffer = Settings.Default.UserToken.FromHexString ();
if (buffer.Length == 0)
return String.Empty;
ProtectedMemory.Unprotect (buffer, MemoryProtectionScope.SameLogon);
return Encoding.UTF8.GetString (buffer).Trim ();
}
そして、ほとんど問題なく動作しますが、ガベージが出る場合があります(多くのFD
バイトと読み取り可能なバイトがいくつかあります)。これは再起動したときにのみ発生すると思われますが、再現するのに苦労しました。
これは意図した動作ですか?つまり、MemoryProtectionScope.SameLogon
再起動時にデータが常に読み取れないということですか? 私は何か間違ったことをしていますか?
FromHexString
およびメソッドは、ToHexString
期待どおりの動作をします。