diff --git a/BBWY.Client/App.xaml.cs b/BBWY.Client/App.xaml.cs index 02448089..8ebc280e 100644 --- a/BBWY.Client/App.xaml.cs +++ b/BBWY.Client/App.xaml.cs @@ -7,6 +7,8 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; using System.IO; +using System.IO.MemoryMappedFiles; +using System.Linq; using System.Reflection; using System.Threading.Tasks; using System.Windows; @@ -28,7 +30,20 @@ namespace BBWY.Client #if DEBUG userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDA1MTUxNjE5NTk0NTg4MTYwIiwidGVhbUlkIjoiMTQzOTg5OTEyMzk1NTI3MzcyOCIsImV4cCI6MTY3MTkwMTU1NH0.UaUubqP442qxVc6ppQt7FO0jcFs3w6KR6q1OeBuL1i8"; //齐越小一 #else - + var uid = e.Args.Count() > 0 ? e.Args.LastOrDefault(args => args.StartsWith("uid:")) : string.Empty; + if (string.IsNullOrEmpty(uid)) + { + MessageBox.Show("缺少启动参数", "提示"); + Environment.Exit(0); + } + var tokenResult = ReadMMF(uid); + if (tokenResult.isOk) + userToken = tokenResult.content; + else + { + MessageBox.Show($"读取内存数据失败\r\n{tokenResult.content}", "提示"); + Environment.Exit(0); + } #endif gl.UserToken = userToken; @@ -74,5 +89,24 @@ namespace BBWY.Client Console.WriteLine(e.Exception); } + public (bool isOk, string content) ReadMMF(string mapname) + { + try + { + using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting(mapname)) + { + using (var mmfStream = mmf.CreateViewStream(0, 1000, MemoryMappedFileAccess.ReadWrite)) + { + StreamReader reader = new StreamReader(mmfStream); + string jwt = reader.ReadToEnd().Replace("\0", "").TrimEnd(); + return (true, jwt); + } + } + } + catch (Exception ex) + { + return (false, ex.Message); + } + } } }