投掷无效键错误所以我想利用在System.Security.Cryptography.ProtectedData对象的解除方法和不断收到异常:System.Security.Cryptography.ProtectedData.Unprotect在某些情况下
cryptographicexception key not valid for use in specified state
我认为它与DataProtectionScope(但我不是100%)有关。
如果我登录并在DEBUG模式下运行服务可执行文件,这对我意味着它将运行在“currentuser”下。但是,如果我尝试运行在LocalSystem帐户下运行的实际Windows服务,它将无法抛出前面提到的异常。
方法:
ProtectedData.Unprotect(Byte[] byteArray, <some_password_salt>, DataProtectionScope.CurrentUser)
的DataProtectionScope枚举,只有CurrentUser或LOCALMACHINE为你的选择。我不确定什么是解决这个问题的最佳选择。
我已经尝试将其设置为DataProtectionScope.LocalMachine,根据MSDN文章,在机器上运行的任何进程应该能够解除保护数据。但没有。
是的,我试图最初使用该标志时发现两个问题。纠正两者后,我能够使用LocalMachine标志工作。 – pghtech
非常有帮助 - 在我的情况下,我试图运行我从另一个项目中获取的代码。它已经在使用LocalMachine,但我在一台机器上进行了加密,并在另一台机器上进行了解密。 – neminem