我正在Windows 8操作系统上开发一个c# .net 3.5应用程序。
我需要使用DPAPI加密数据。在除了一台机器之外的所有机器上,它都可以正常运行。在这台机器上,我遇到了以下异常:System.Security.Cryptography.CryptographicException Message: Access is denied.
byte[] bytes;
bytes = ProtectedData.Protect(Encoding.UTF8.GetBytes(argsStr.ToString()), null, DataProtectionScope.CurrentUser);
当我将DataProtectionScope.CurrentUser更改为DataProtectionScope.LocalMachine时,它可以正常工作。
似乎有人拒绝了当前用户执行DAPI加密的访问权限。
我该怎么解决这个问题?
失败的应用程序是在当前登录用户下运行的控制台应用程序。
即使使用提升的特权运行应用程序,仍然会因访问被拒绝而失败。
我尝试重置登录密码并解决了这个问题。
像这样的情况如何发生?
argsStr
是什么类型。ProtectedData.Protect
的参数是两个byte
数组。 - Security HoundargsStr
已经是一个字符串,为什么要使用 ToString() 将其转换为字符串?你没有回答我的问题。argsStr
究竟是什么类型? - Security Hound