mirror of
https://jihulab.com/DGP-Studio/Snap.Hutao.git
synced 2025-11-19 21:02:53 +08:00
fix #865
This commit is contained in:
@@ -6,6 +6,7 @@ using Snap.Hutao.Core.ExceptionService;
|
||||
using Snap.Hutao.Model.Entity;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace Snap.Hutao.Service.Game;
|
||||
@@ -31,8 +32,14 @@ internal static class RegistryInterop
|
||||
{
|
||||
if (account is not null)
|
||||
{
|
||||
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(account.MihoyoSDK));
|
||||
string path = $"HKCU:{GenshinKey[@"HKEY_CURRENT_USER\".Length..]}";
|
||||
// 存回注册表的字节需要 '\0' 结尾
|
||||
Encoding.UTF8.GetByteCount(account.MihoyoSDK);
|
||||
byte[] tempBytes = Encoding.UTF8.GetBytes(account.MihoyoSDK);
|
||||
byte[] target = new byte[tempBytes.Length + 1];
|
||||
tempBytes.CopyTo(target, 0);
|
||||
|
||||
string base64 = Convert.ToBase64String(target);
|
||||
string path = $"HKCU:{GenshinPath}";
|
||||
string command = $"""
|
||||
$value = [Convert]::FromBase64String('{base64}');
|
||||
Set-ItemProperty -Path '{path}' -Name '{SdkChineseKey}' -Value $value -Force;
|
||||
@@ -68,13 +75,18 @@ internal static class RegistryInterop
|
||||
/// 在注册表中获取账号信息
|
||||
/// </summary>
|
||||
/// <returns>当前注册表中的信息</returns>
|
||||
public static string? Get()
|
||||
public static unsafe string? Get()
|
||||
{
|
||||
object? sdk = Registry.GetValue(GenshinKey, SdkChineseKey, Array.Empty<byte>());
|
||||
|
||||
if (sdk is byte[] bytes)
|
||||
{
|
||||
return Encoding.UTF8.GetString(bytes);
|
||||
fixed (byte* pByte = bytes)
|
||||
{
|
||||
// 从注册表获取的字节数组带有 '\0' 结尾,需要舍去
|
||||
ReadOnlySpan<byte> span = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(pByte);
|
||||
return Encoding.UTF8.GetString(span);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user