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