2011-01-21 3 views
6

Пусть зашифровать данные и записать его в файл, например так:ProtectedData.Unprotect (DPAPI) перестает работать после смены пароля

byte[] encrypted = 
    ProtectedData.Protect(plain, null, DataProtectionScope.CurrentUser); 
File.WriteAllBytes(filename, encrypted); 

дешифрования как просто:

byte[] encrypted = File.ReadAllBytes(filename); 
byte[] decrypted = 
    ProtectedData.Unprotect(encrypted, null, DataProtectionScope.CurrentUser); 

Теперь, когда я изменяю мой пароль для Windows между вызовами «Защитить и снять защиту», «Снять защиту» выдает исключение. Я хочу, чтобы зашифрованные данные были связаны с моей учетной записью пользователя, но я также хочу, чтобы он перестал работать с изменениями пароля.

Я предполагаю, что я должен передать данные в Windows, а не записывать их в свой собственный файл, чтобы Windows могла повторно шифровать его при изменениях пароля. Я просто не могу найти документацию, которая говорит мне, как это сделать. Кто-нибудь знает?

ответ

12

Вы поменяли пароль? Использование обычной процедуры и указание старого пароля должны работать с ProtectedData, а установка нового пароля под управлением компьютером не будет.

Set Password dialog with warning

+0

Это было быстро! Спасибо, это была проблема. Если я позволю пользователю изменить свой пароль, он будет работать. –

+0

Quick Q, если я сброшу пароль учетной записи, а затем снова верну его обратно к своему старому паролю, будет ли Unprotect работать снова? – Shane

+0

Диалог содержит _irreversible loss_, поэтому он не будет работать. – sisve

Смежные вопросы