From c15c75075cec3a01a5a09b5378ea2fce7a333942 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 26 Jul 2025 15:00:31 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= =?UTF-8?q?=E5=88=86=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/Helpers/DeviceIdentifier.cs | 413 ------------------------- 1 file changed, 413 deletions(-) diff --git a/Ink Canvas/Helpers/DeviceIdentifier.cs b/Ink Canvas/Helpers/DeviceIdentifier.cs index 0bc68a6f..eaa3ef86 100644 --- a/Ink Canvas/Helpers/DeviceIdentifier.cs +++ b/Ink Canvas/Helpers/DeviceIdentifier.cs @@ -2326,251 +2326,9 @@ namespace Ink_Canvas.Helpers return GetUsageDataProtectionSummary(); } - /// - /// 测试每周重置功能 - /// - public static string TestWeeklyReset() - { - var results = new StringBuilder(); - results.AppendLine("每周重置功能测试:"); - try - { - lock (fileLock) - { - var stats = LoadUsageStats(); - if (stats == null) - { - results.AppendLine("无法加载使用统计数据"); - return results.ToString(); - } - results.AppendLine($"\n当前状态:"); - results.AppendLine($" 本周开始日期: {(stats.WeekStartDate != DateTime.MinValue ? stats.WeekStartDate.ToString("yyyy-MM-dd") : "未设置")}"); - results.AppendLine($" 本周启动次数: {stats.WeeklyLaunchCount}"); - results.AppendLine($" 本周使用时长: {stats.WeeklyUsageMinutes}分钟"); - results.AppendLine($" 上周启动次数: {stats.LastWeekLaunchCount}"); - results.AppendLine($" 上周使用时长: {stats.LastWeekUsageMinutes}分钟"); - // 模拟跨周情况 - results.AppendLine($"\n模拟跨周测试:"); - var originalWeekStart = stats.WeekStartDate; - var originalWeeklyLaunches = stats.WeeklyLaunchCount; - var originalWeeklyMinutes = stats.WeeklyUsageMinutes; - - // 手动设置为上周 - stats.WeekStartDate = DateTime.Now.AddDays(-7).Date; - stats.WeeklyLaunchCount = 5; - stats.WeeklyUsageMinutes = 120; - - results.AppendLine($" 设置为上周数据 - 启动: {stats.WeeklyLaunchCount}次, 时长: {stats.WeeklyUsageMinutes}分钟"); - - // 触发重置检查 - stats.CheckAndResetWeeklyStats(); - - results.AppendLine($"\n重置后状态:"); - results.AppendLine($" 本周开始日期: {stats.WeekStartDate:yyyy-MM-dd}"); - results.AppendLine($" 本周启动次数: {stats.WeeklyLaunchCount}"); - results.AppendLine($" 本周使用时长: {stats.WeeklyUsageMinutes}分钟"); - results.AppendLine($" 上周启动次数: {stats.LastWeekLaunchCount}"); - results.AppendLine($" 上周使用时长: {stats.LastWeekUsageMinutes}分钟"); - - // 验证重置是否正确 - var currentWeekStart = stats.GetWeekStartDate(DateTime.Now); - if (stats.WeekStartDate == currentWeekStart && - stats.WeeklyLaunchCount == 0 && - stats.WeeklyUsageMinutes == 0 && - stats.LastWeekLaunchCount == 5 && - stats.LastWeekUsageMinutes == 120) - { - results.AppendLine($"\n✓ 每周重置功能工作正常"); - } - else - { - results.AppendLine($"\n✗ 每周重置功能异常"); - } - - // 恢复原始数据 - stats.WeekStartDate = originalWeekStart; - stats.WeeklyLaunchCount = originalWeeklyLaunches; - stats.WeeklyUsageMinutes = originalWeeklyMinutes; - stats.UpdateDataHash(); - SaveUsageStats(stats); - - results.AppendLine($"\n已恢复原始数据"); - - return results.ToString(); - } - } - catch (Exception ex) - { - results.AppendLine($"\n测试失败: {ex.Message}"); - LogHelper.WriteLogToFile($"DeviceIdentifier | 每周重置测试失败: {ex.Message}", LogHelper.LogType.Error); - return results.ToString(); - } - } - - /// - /// 手动触发每周重置(用于测试) - /// - public static string ManualWeeklyReset() - { - try - { - lock (fileLock) - { - var stats = LoadUsageStats(); - if (stats == null) - { - return "无法加载使用统计数据"; - } - - var beforeReset = $"重置前 - 本周启动: {stats.WeeklyLaunchCount}次, 本周时长: {stats.WeeklyUsageMinutes}分钟"; - - // 强制重置 - stats.LastWeekLaunchCount = stats.WeeklyLaunchCount; - stats.LastWeekUsageMinutes = stats.WeeklyUsageMinutes; - stats.WeeklyLaunchCount = 0; - stats.WeeklyUsageMinutes = 0; - stats.WeekStartDate = stats.GetWeekStartDate(DateTime.Now); - - stats.UpdateDataHash(); - SaveUsageStats(stats); - - var afterReset = $"重置后 - 本周启动: {stats.WeeklyLaunchCount}次, 本周时长: {stats.WeeklyUsageMinutes}分钟, 上周启动: {stats.LastWeekLaunchCount}次, 上周时长: {stats.LastWeekUsageMinutes}分钟"; - - LogHelper.WriteLogToFile($"DeviceIdentifier | 手动每周重置完成"); - return $"每周重置完成:\n{beforeReset}\n{afterReset}"; - } - } - catch (Exception ex) - { - var errorMsg = $"手动每周重置失败: {ex.Message}"; - LogHelper.WriteLogToFile($"DeviceIdentifier | {errorMsg}", LogHelper.LogType.Error); - return errorMsg; - } - } - - /// - /// 测试注册表写入操作 - /// - public static string TestRegistryOperations() - { - var results = new StringBuilder(); - results.AppendLine("注册表操作测试结果:"); - - try - { - // 测试设备ID写入 - var testDeviceId = "TEST" + DateTime.Now.ToString("yyyyMMddHHmmss"); - results.AppendLine($"测试设备ID: {testDeviceId}"); - - try - { - using (var key = Registry.CurrentUser.CreateSubKey(@"Software\ICC\DeviceInfo")) - { - if (key != null) - { - key.SetValue("TestDeviceId", testDeviceId); - key.SetValue("TestTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); - results.AppendLine("✓ 主注册表位置写入成功"); - } - else - { - results.AppendLine("✗ 主注册表位置创建失败"); - } - } - } - catch (Exception ex) - { - results.AppendLine($"✗ 主注册表位置写入失败: {ex.Message}"); - } - - // 测试多个注册表位置写入 - var registryPaths = new[] - { - @"Software\Microsoft\Windows\CurrentVersion\ICC", - @"Software\Classes\.icc\UsageData", - @"Software\ICC\Config\Usage" - }; - - foreach (var path in registryPaths) - { - try - { - using (var key = Registry.CurrentUser.CreateSubKey(path)) - { - if (key != null) - { - key.SetValue("TestData", "TestValue"); - key.SetValue("TestTime", DateTime.Now.ToBinary()); - results.AppendLine($"✓ 注册表位置写入成功: {path}"); - } - else - { - results.AppendLine($"✗ 注册表位置创建失败: {path}"); - } - } - } - catch (Exception ex) - { - results.AppendLine($"✗ 注册表位置写入失败 ({path}): {ex.Message}"); - } - } - - // 测试读取操作 - results.AppendLine("\n注册表读取测试:"); - try - { - using (var key = Registry.CurrentUser.OpenSubKey(@"Software\ICC\DeviceInfo")) - { - if (key != null) - { - var readValue = key.GetValue("TestDeviceId") as string; - if (readValue == testDeviceId) - { - results.AppendLine("✓ 注册表读取验证成功"); - } - else - { - results.AppendLine($"✗ 注册表读取验证失败: 期望 {testDeviceId}, 实际 {readValue}"); - } - } - else - { - results.AppendLine("✗ 注册表读取失败: 键不存在"); - } - } - } - catch (Exception ex) - { - results.AppendLine($"✗ 注册表读取失败: {ex.Message}"); - } - - // 测试实际数据保存 - results.AppendLine("\n实际数据保存测试:"); - var stats = LoadUsageStats(); - if (stats != null) - { - try - { - SaveUsageStatsToRegistry(stats); - SaveUsageStatsToMultipleRegistryLocations(stats); - results.AppendLine("✓ 实际使用统计数据保存到注册表成功"); - } - catch (Exception ex) - { - results.AppendLine($"✗ 实际使用统计数据保存失败: {ex.Message}"); - } - } - - return results.ToString(); - } - catch (Exception ex) - { - return $"注册表操作测试失败: {ex.Message}"; - } - } /// /// 强制执行一次完整的数据保存操作(包括注册表) @@ -2726,179 +2484,8 @@ namespace Ink_Canvas.Helpers } } - /// - /// 测试反篡改恢复机制 - /// - public static string TestAntiTamperingRecovery() - { - var results = new StringBuilder(); - results.AppendLine("反篡改恢复机制测试结果:"); - try - { - lock (fileLock) - { - // 1. 收集所有数据源 - results.AppendLine("\n1. 收集数据源:"); - var allSources = CollectAllUsageDataSources(); - results.AppendLine($" 找到 {allSources.Count} 个数据源"); - foreach (var source in allSources) - { - results.AppendLine($" - {source.Source}: 完整性={source.IsIntegrityValid}, 信任度={source.TrustScore}, 修改时间={source.LastModified:yyyy-MM-dd HH:mm:ss}"); - results.AppendLine($" 启动次数={source.Stats.LaunchCount}, 使用时长={source.Stats.TotalUsageMinutes}分钟"); - } - // 2. 选择最可信数据 - results.AppendLine("\n2. 选择最可信数据:"); - var bestData = SelectMostTrustedData(allSources); - if (bestData != null) - { - results.AppendLine($" 选择: {bestData.Source}"); - results.AppendLine($" 完整性: {bestData.IsIntegrityValid}"); - results.AppendLine($" 信任度: {bestData.TrustScore}"); - results.AppendLine($" 数据: 启动{bestData.Stats.LaunchCount}次, 使用{bestData.Stats.TotalUsageMinutes}分钟"); - } - else - { - results.AppendLine(" 未找到可信数据"); - } - - // 3. 测试部分恢复 - results.AppendLine("\n3. 部分数据恢复测试:"); - var partialRecovery = AttemptPartialDataRecovery(allSources); - if (partialRecovery != null) - { - results.AppendLine($" 恢复成功: 启动{partialRecovery.LaunchCount}次, 使用{partialRecovery.TotalUsageMinutes}分钟"); - results.AppendLine($" 完整性验证: {partialRecovery.VerifyDataIntegrity()}"); - } - else - { - results.AppendLine(" 部分恢复失败"); - } - - // 4. 测试实际加载 - results.AppendLine("\n4. 实际加载测试:"); - var loadedStats = LoadUsageStats(); - if (loadedStats != null) - { - results.AppendLine($" 加载成功: 启动{loadedStats.LaunchCount}次, 使用{loadedStats.TotalUsageMinutes}分钟"); - results.AppendLine($" 完整性验证: {loadedStats.VerifyDataIntegrity()}"); - results.AppendLine($" 使用频率: {loadedStats.UsageFrequency}"); - results.AppendLine($" 更新优先级: {loadedStats.UpdatePriority}"); - } - else - { - results.AppendLine(" 加载失败"); - } - - return results.ToString(); - } - } - catch (Exception ex) - { - results.AppendLine($"\n测试失败: {ex.Message}"); - LogHelper.WriteLogToFile($"DeviceIdentifier | 反篡改恢复测试失败: {ex.Message}", LogHelper.LogType.Error); - return results.ToString(); - } - } - - /// - /// 模拟数据篡改并测试恢复 - /// - public static string SimulateDataTamperingAndRecover() - { - var results = new StringBuilder(); - results.AppendLine("数据篡改模拟和恢复测试:"); - - try - { - lock (fileLock) - { - // 1. 保存当前正常数据 - results.AppendLine("\n1. 保存当前正常数据作为备份..."); - var originalStats = LoadUsageStats(); - if (originalStats == null) - { - results.AppendLine(" 无法获取原始数据,创建测试数据"); - originalStats = new UsageStats - { - DeviceId = DeviceId, - LaunchCount = 50, - TotalUsageMinutes = 1200, - LastLaunchTime = DateTime.Now.AddDays(-1), - UpdatePriority = UpdatePriority.Medium, - UsageFrequency = UsageFrequency.Medium - }; - originalStats.UpdateDataHash(); - } - - SaveUsageStatsToAllLocations(originalStats); - results.AppendLine($" 原始数据: 启动{originalStats.LaunchCount}次, 使用{originalStats.TotalUsageMinutes}分钟"); - - // 2. 模拟篡改主文件 - results.AppendLine("\n2. 模拟篡改主文件..."); - try - { - var tamperedStats = new UsageStats - { - DeviceId = DeviceId, - LaunchCount = 1, // 篡改为很小的值 - TotalUsageMinutes = 5, - LastLaunchTime = DateTime.Now, - UpdatePriority = UpdatePriority.Low, - UsageFrequency = UsageFrequency.Low, - DataHash = "TAMPERED_HASH", // 错误的哈希值 - LastModified = DateTime.Now - }; - - var tamperedJson = JsonConvert.SerializeObject(tamperedStats, Formatting.Indented); - File.WriteAllText(UsageStatsFilePath, tamperedJson); - results.AppendLine(" 主文件已被篡改"); - } - catch (Exception ex) - { - results.AppendLine($" 篡改主文件失败: {ex.Message}"); - } - - // 3. 测试恢复机制 - results.AppendLine("\n3. 测试智能恢复机制..."); - var recoveredStats = LoadUsageStats(); - if (recoveredStats != null) - { - results.AppendLine($" 恢复成功: 启动{recoveredStats.LaunchCount}次, 使用{recoveredStats.TotalUsageMinutes}分钟"); - results.AppendLine($" 完整性验证: {recoveredStats.VerifyDataIntegrity()}"); - - // 检查是否恢复了正确的数据 - if (Math.Abs(recoveredStats.LaunchCount - originalStats.LaunchCount) <= 5 && - Math.Abs(recoveredStats.TotalUsageMinutes - originalStats.TotalUsageMinutes) <= 100) - { - results.AppendLine(" ✓ 数据恢复正确,反篡改机制工作正常"); - } - else - { - results.AppendLine(" ✗ 数据恢复不完全正确,但避免了使用篡改数据"); - } - } - else - { - results.AppendLine(" ✗ 恢复失败"); - } - - // 4. 恢复正常状态 - results.AppendLine("\n4. 恢复正常状态..."); - SaveUsageStatsToAllLocations(originalStats); - results.AppendLine(" 系统已恢复到正常状态"); - - return results.ToString(); - } - } - catch (Exception ex) - { - results.AppendLine($"\n模拟测试失败: {ex.Message}"); - LogHelper.WriteLogToFile($"DeviceIdentifier | 数据篡改模拟测试失败: {ex.Message}", LogHelper.LogType.Error); - return results.ToString(); - } - } } } \ No newline at end of file