Хм, да, вы можете сохранить «cookie», который я бы использовал для «пользовательских данных», которые вы описываете внутри вашего приложения (кстати, я думаю, что другой термин для «cookie» - это «билет аутентификации»).".)
Однако обычно пользователь не имеет права изменять исполняемый файл, на котором он работает.И во фреймворке есть отличная поддержка для хранения информации вне приложения ...
Я думаю, вам лучше хранить это в какой-то частной области, которую может увидеть только пользователь вашей программы на C #.Проверьте изолированное хранилище для этого.И, возможно, также зашифровать его.
Скажем, у вас есть строка, представляющая данные, которые вы хотите сохранить, называемое состояние (вы можете сериализовать сериализуемый класс в строку.) Вы можете сохранить его так:
private static IsolatedStorageFile _isoStore =
IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
String state = "my Secret String";
using (IsolatedStorageFileStream oStream =
new IsolatedStorageFileStream(C_CREDENTIALS_FILENAME,
FileMode.Create,
_isoStore))
{
Byte[] stateBytes = Encoding.Unicode.GetBytes(state);
Byte[] encryptedBytes = ProtectedData.Protect(stateBytes,
null,
DataProtectionScope.CurrentUser);
oStream.Write(encryptedBytes, 0, encryptedBytes.Length);
C_CREDENTIAL_FILENAME - это имя файла, в котором вы хотите сохранить информацию. Чтобы вернуть ее, попробуйте что-то вроде этого:
string[] fileNames = _isoStore.GetFileNames(C_CREDENTIALS_FILENAME);
if (fileNames.Any(item => item == C_CREDENTIALS_FILENAME))
{
//it exists
using (IsolatedStorageFileStream iStream =
new IsolatedStorageFileStream(C_CREDENTIALS_FILENAME, FileMode.Open, _isoStore))
{
Byte[] unEncryptedBytes = ProtectedData.Unprotect(iStream.ToArray(),
null,
DataProtectionScope.CurrentUser);
String unEncryptedXml = Encoding.Unicode.GetString(unEncryptedBytes);
}
}
else
{
//it doesn't exist
return null;
}
}