Vì vậy, tôi đang cố gắng để sử dụng các phương pháp Unprotect trong đối tượng System.Security.Cryptography.ProtectedData và tiếp tục nhận được ngoại lệ:System.Security.Cryptography.ProtectedData.Unprotect là ném một lỗi chính không hợp lệ trong một số trường hợp
cryptographicexception key not valid for use in specified state
Tôi nghĩ rằng nó đã làm với DataProtectionScope (nhưng tôi không phải 100%).
Phương pháp này hoạt động nếu tôi đăng nhập và chạy một dịch vụ thực thi trong chế độ DEBUG có nghĩa là với tôi, nó sẽ chạy dưới "currentuser". Tuy nhiên, nếu tôi cố gắng chạy các dịch vụ cửa sổ thực tế, chạy dưới tài khoản LocalSystem, nó không ném ngoại lệ đã đề cập trước đó.
Phương pháp:
ProtectedData.Unprotect(Byte[] byteArray, <some_password_salt>, DataProtectionScope.CurrentUser)
Các DataProtectionScope Enum, chỉ có CurrentUser hoặc LocalMachine như các tùy chọn của bạn. Tôi không chắc chắn sẽ là lựa chọn tốt nhất để giải quyết vấn đề này.
Tôi đã thử cài đặt nó thành DataProtectionScope.LocalMachine theo bài viết MSDN, bất kỳ quá trình nào đang chạy trên máy đều có thể bảo vệ dữ liệu. Nhưng không.
Có, tôi đã tìm thấy hai vấn đề khi tôi cố gắng sử dụng cờ đó ban đầu. Sau khi chỉnh sửa cả hai, tôi đã có thể sử dụng cờ LocalMachine để làm việc. – pghtech
Rất hữu ích - trong trường hợp của tôi, tôi đã cố gắng chạy mã tôi đã nắm lấy từ một dự án khác. Nó đã sử dụng LocalMachine rồi, nhưng tôi đã mã hóa trên một máy và giải mã trên một máy khác. – neminem