UWP应用卸载时自动清除PasswordVault敏感数据的方案咨询
UWP应用卸载时清除PasswordVault敏感数据的解决方案
方案1:扩展卸载任务(Uninstall Task)
这是目前最可靠的自动触发方案,适用于Windows 10 1809及以上版本:
- 在
Package.appxmanifest中添加desktop6:Extension扩展,声明runFullTrust能力,指定扩展类型为windows.uninstallTask,关联一个无UI的Win32控制台程序。 - 编写控制台程序,通过
PasswordVaultAPI清理当前应用的凭据:using Windows.Security.Credentials; var vault = new PasswordVault(); try { var allCreds = vault.RetrieveAll(); foreach (var cred in allCreds) { // 验证凭据属于当前应用(可通过Resource或UserName字段匹配应用唯一标识) if (cred.Resource.Equals("YourAppUniqueTag", StringComparison.Ordinal)) { vault.Remove(cred); } } } catch (Exception) { // 无凭据时跳过异常 } - 将控制台程序打包进UWP包内,在manifest中配置卸载任务的执行路径。注意:提交商店时需说明
runFullTrust能力的用途,避免审核驳回。
方案2:迁移至应用专属存储(替代PasswordVault)
如果业务允许,可放弃PasswordVault,改用应用的本地/漫游文件夹存储加密后的敏感数据:
- 对敏感数据进行AES加密后,写入
ApplicationData.Current.LocalFolder或RoamingFolder。 - 这些文件夹会在应用卸载时被系统自动删除,无需额外处理。
- 若必须保留PasswordVault,可在应用启动时检查应用安装状态(通过
Package.Current判断),若检测到异常残留则主动清理凭据,但此方法依赖用户再次启动应用,无法完全自动触发。
关键注意事项
- 卸载任务必须是无UI的后台进程,不能弹出窗口,否则会被系统强制终止。
- 测试卸载流程时,不要使用Visual Studio的调试卸载,需手动卸载应用后,通过控制面板的“凭据管理器”验证数据是否清除。
内容的提问来源于stack exchange,提问作者Pierre Whats Up Scadra
相关产品推荐
相关产品推荐

