System.Security.Cryptography.ProtectedData.Unprotect при определенных обстоятельствах выдает ошибку неверного ключа

Итак, я пытаюсь использовать метод Unprotect в System.Security.Cryptography.ProtectedData и продолжаю получать исключение:

cryptographicexception key not valid for use in specified state

Я думаю, что это связано с DataProtectionScope (но я не на 100%).

Этот метод работает, если я вхожу в систему и запускаю исполняемый файл службы в режиме DEBUG, что для меня означает, что он будет работать под «текущим пользователем». Однако, если я попытаюсь запустить фактическую службу Windows, которая работает под учетной записью LocalSystem, она не сгенерирует предыдущее упомянутое исключение.

Метод:

ProtectedData.Unprotect(Byte[] byteArray, <some_password_salt>, DataProtectionScope.CurrentUser)

Перечисление DataProtectionScope содержит только CurrentUser или LocalMachine в качестве ваших параметров. Я не уверен, что было бы лучшим вариантом для решения этой проблемы.

Я попытался установить его на DataProtectionScope.LocalMachine, который, согласно статье MSDN, любой процесс, запущенный на машине, должен иметь возможность снимать защиту данных. Но не делает.

12
задан pghtech 5 July 2011 в 19:45
поделиться