From 060968cdc2a8500a87838e01777c85c9283db3e1 Mon Sep 17 00:00:00 2001 From: dathlin Date: Sat, 16 Sep 2017 13:29:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=87=8D=E6=9E=84=EF=BC=8Cwi?= =?UTF-8?q?nform=E5=92=8Cwpf=E7=99=BB=E5=BD=95=E7=B3=BB=E7=BB=9F=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=BF=9B=E8=A1=8C=E6=8F=90=E7=82=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ClientsLibrary/AccountSupport/AccountLogin.cs | 195 ++++++++++++ .../FormDownloading.Designer.cs | 0 .../{ => BasicSupport}/FormDownloading.cs | 0 .../{ => BasicSupport}/FormDownloading.resx | 0 .../FormShowMachineId.Designer.cs | 83 +++++ .../BasicSupport/FormShowMachineId.cs | 29 ++ .../BasicSupport/FormShowMachineId.resx | 294 ++++++++++++++++++ ClientsLibrary/ClientsLibrary.csproj | 16 +- ClientsLibrary/RegistryEditor_5838.ico | Bin 0 -> 10134 bytes ClientsLibrary/UserClient.cs | 2 +- CommonLibrary/BasicSupport/SoftSettings.cs | 3 +- 软件系统客户端Wpf/LoginWindow.xaml | 4 +- 软件系统客户端Wpf/LoginWindow.xaml.cs | 293 ++++++----------- 软件系统客户端模版/FormLogin.Designer.cs | 4 +- 软件系统客户端模版/FormLogin.cs | 220 +++---------- .../Controllers/AccountController.cs | 2 +- 16 files changed, 774 insertions(+), 371 deletions(-) create mode 100644 ClientsLibrary/AccountSupport/AccountLogin.cs rename ClientsLibrary/{ => BasicSupport}/FormDownloading.Designer.cs (100%) rename ClientsLibrary/{ => BasicSupport}/FormDownloading.cs (100%) rename ClientsLibrary/{ => BasicSupport}/FormDownloading.resx (100%) create mode 100644 ClientsLibrary/BasicSupport/FormShowMachineId.Designer.cs create mode 100644 ClientsLibrary/BasicSupport/FormShowMachineId.cs create mode 100644 ClientsLibrary/BasicSupport/FormShowMachineId.resx create mode 100644 ClientsLibrary/RegistryEditor_5838.ico diff --git a/ClientsLibrary/AccountSupport/AccountLogin.cs b/ClientsLibrary/AccountSupport/AccountLogin.cs new file mode 100644 index 0000000..061ac4c --- /dev/null +++ b/ClientsLibrary/AccountSupport/AccountLogin.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using HslCommunication; +using System.Threading; +using Newtonsoft.Json.Linq; +using CommonLibrary; +using HslCommunication.BasicFramework; + +namespace ClientsLibrary +{ + + /********************************************************************************* + * + * 统一的账户登录模型 + * + * + *********************************************************************************/ + + + /// + /// 用户客户端使用的统一登录的逻辑 + /// + public class AccountLogin + { + /// + /// 系统统一的登录模型 + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static bool AccountLoginServer(Action message_show, Action start_update, Action thread_finish,string userName,string password,bool remember,string clientType) + { + message_show.Invoke("正在维护检查..."); + + Thread.Sleep(200); + + // 请求指令头数据,该数据需要更具实际情况更改 + OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.维护检查); + if (result.IsSuccess) + { + byte[] temp = Encoding.Unicode.GetBytes(result.Content); + // 例如返回结果为1说明允许登录,0则说明服务器处于维护中,并将信息显示 + if (result.Content != "1") + { + message_show.Invoke(result.Content.Substring(1)); + thread_finish.Invoke(); + return false; + } + } + else + { + // 访问失败 + message_show.Invoke(result.Message); + thread_finish.Invoke(); + return false; + } + + + + // 检查账户 + message_show.Invoke("正在检查账户..."); + + // 延时 + Thread.Sleep(200); + + //=================================================================================== + // 根据实际情况校验,选择数据库校验或是将用户名密码发至服务器校验 + // 以下展示了服务器校验的方法,如您需要数据库校验,请删除下面并改成SQL访问验证的方式 + + // 包装数据 + JObject json = new JObject + { + { UserAccount.UserNameText, new JValue(userName) }, + { UserAccount.PasswordText, new JValue(password) }, + { UserAccount.LoginWayText, new JValue(clientType) }, + { UserAccount.DeviceUniqueID, new JValue(UserClient.JsonSettings.SystemInfo) } + }; + result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.账户检查, json.ToString()); + if (result.IsSuccess) + { + // 服务器应该返回账户的信息 + UserAccount account = JObject.Parse(result.Content).ToObject(); + if (!account.LoginEnable) + { + // 不允许登录 + message_show.Invoke(account.ForbidMessage); + thread_finish.Invoke(); + return false; + } + UserClient.UserAccount = account; + } + else + { + // 访问失败 + message_show.Invoke(result.Message); + thread_finish.Invoke(); + return false; + } + + // 登录成功,进行保存用户名称和密码 + UserClient.JsonSettings.LoginName = userName; + UserClient.JsonSettings.Password = remember ? password : ""; + UserClient.JsonSettings.LoginTime = DateTime.Now; + UserClient.JsonSettings.SaveToFile(); + + + // 版本验证 + message_show.Invoke("正在验证版本..."); + + // 延时 + Thread.Sleep(200); + + result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.更新检查); + if (result.IsSuccess) + { + // 服务器应该返回服务器的版本号 + SystemVersion sv = new SystemVersion(result.Content); + // 系统账户跳过低版本检测,该做法存在一定的风险,需要开发者仔细确认安全隐患 + if (UserClient.UserAccount.UserName != "admin") + { + if (UserClient.CurrentVersion != sv) + { + // 保存新版本信息 + UserClient.JsonSettings.IsNewVersionRunning = true; + UserClient.JsonSettings.SaveToFile(); + // 和当前系统版本号不一致,启动更新 + start_update.Invoke(); + return false; + } + } + else + { + if (UserClient.CurrentVersion < sv) + { + // 保存新版本信息 + UserClient.JsonSettings.IsNewVersionRunning = true; + UserClient.JsonSettings.SaveToFile(); + // 和当前系统版本号不一致,启动更新 + start_update.Invoke(); + return false; + } + } + } + else + { + // 访问失败 + message_show.Invoke(result.Message); + thread_finish.Invoke(); + return false; + } + + + // + // 验证结束后,根据需要是否下载服务器的数据,或是等到进入主窗口下载也可以 + // 如果有参数决定主窗口的显示方式,那么必要在下面向服务器请求数据 + // 以下展示了初始化参数的功能 + + message_show.Invoke("正在下载参数..."); + + // 延时 + Thread.Sleep(200); + + + result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.参数下载); + if (result.IsSuccess) + { + // 服务器返回初始化的数据,此处进行数据的提取,有可能包含了多个数据 + json = JObject.Parse(result.Content); + // 例如公告数据 + UserClient.Announcement = SoftBasic.GetValueFromJsonObject(json, nameof(UserClient.Announcement), ""); + if (json[nameof(UserClient.SystemFactories)] != null) + { + UserClient.SystemFactories = json[nameof(UserClient.SystemFactories)].ToObject>(); + } + } + else + { + // 访问失败 + message_show.Invoke(result.Message); + thread_finish.Invoke(); + return false; + } + + return true; + } + + } +} diff --git a/ClientsLibrary/FormDownloading.Designer.cs b/ClientsLibrary/BasicSupport/FormDownloading.Designer.cs similarity index 100% rename from ClientsLibrary/FormDownloading.Designer.cs rename to ClientsLibrary/BasicSupport/FormDownloading.Designer.cs diff --git a/ClientsLibrary/FormDownloading.cs b/ClientsLibrary/BasicSupport/FormDownloading.cs similarity index 100% rename from ClientsLibrary/FormDownloading.cs rename to ClientsLibrary/BasicSupport/FormDownloading.cs diff --git a/ClientsLibrary/FormDownloading.resx b/ClientsLibrary/BasicSupport/FormDownloading.resx similarity index 100% rename from ClientsLibrary/FormDownloading.resx rename to ClientsLibrary/BasicSupport/FormDownloading.resx diff --git a/ClientsLibrary/BasicSupport/FormShowMachineId.Designer.cs b/ClientsLibrary/BasicSupport/FormShowMachineId.Designer.cs new file mode 100644 index 0000000..b3627e6 --- /dev/null +++ b/ClientsLibrary/BasicSupport/FormShowMachineId.Designer.cs @@ -0,0 +1,83 @@ +namespace ClientsLibrary +{ + partial class FormShowMachineId + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormShowMachineId)); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.userButton_login = new HslCommunication.Controls.UserButton(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(29, 26); + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(294, 29); + this.textBox1.TabIndex = 0; + // + // userButton_login + // + this.userButton_login.BackColor = System.Drawing.Color.Transparent; + this.userButton_login.CustomerInformation = ""; + this.userButton_login.EnableColor = System.Drawing.Color.FromArgb(((int)(((byte)(190)))), ((int)(((byte)(190)))), ((int)(((byte)(190))))); + this.userButton_login.Font = new System.Drawing.Font("微软雅黑", 9F); + this.userButton_login.Location = new System.Drawing.Point(125, 65); + this.userButton_login.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.userButton_login.Name = "userButton_login"; + this.userButton_login.Size = new System.Drawing.Size(108, 27); + this.userButton_login.TabIndex = 6; + this.userButton_login.UIText = "复制到剪贴板"; + this.userButton_login.Click += new System.EventHandler(this.userButton_login_Click); + // + // FormShowMachineId + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(356, 105); + this.Controls.Add(this.userButton_login); + this.Controls.Add(this.textBox1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FormShowMachineId"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "显示机器码"; + this.Load += new System.EventHandler(this.FormShowMachineId_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox1; + private HslCommunication.Controls.UserButton userButton_login; + } +} \ No newline at end of file diff --git a/ClientsLibrary/BasicSupport/FormShowMachineId.cs b/ClientsLibrary/BasicSupport/FormShowMachineId.cs new file mode 100644 index 0000000..975fb6c --- /dev/null +++ b/ClientsLibrary/BasicSupport/FormShowMachineId.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ClientsLibrary +{ + public partial class FormShowMachineId : Form + { + public FormShowMachineId() + { + InitializeComponent(); + } + + private void userButton_login_Click(object sender, EventArgs e) + { + Clipboard.SetText(textBox1.Text); + } + + private void FormShowMachineId_Load(object sender, EventArgs e) + { + textBox1.Text = UserClient.JsonSettings.SystemInfo; + } + } +} diff --git a/ClientsLibrary/BasicSupport/FormShowMachineId.resx b/ClientsLibrary/BasicSupport/FormShowMachineId.resx new file mode 100644 index 0000000..a8166cc --- /dev/null +++ b/ClientsLibrary/BasicSupport/FormShowMachineId.resx @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA + CABoBQAAHg0AACAgAAABACAAqBAAAIYSAAAQEAAAAQAgAGgEAAAuIwAAKAAAACAAAABAAAAAAQAEAAAA + AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA + /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAA///////////////////wAP// + ////////////////8AD/d3d3f/d3d3f/d3d3f/AA/3d3d3/3d3d3/3d3d3/wAP93d3d/93d3d/93d3d/ + 8AD/d3d3f/d3d3f/d3d3f/AA/3d3d3/3d3d3/3d3d3/wAP93d3d/93d3d/93d3d/8AD/d3d3f/d3d3f/ + d3d3f/AA///////////////////wAP//////////////////8AD/d3d3f/d3d3f/AAAAAAAA/3d3d3/3 + d3d3/wAAAAAAAP93d3d/93d3d/8AAAAAAAD/d3d3f/d3d3f/AA/wAAAA/3d3d3/3d3d3/wD//wAAAP93 + d3d/93d3d/8P///wAAD/d3d3f/d3d3f///d//wAA//////////////93d//wAP/////////////3d3d/ + /wD/d3d3f/AAAA//d3d3d//w/3d3d3/wAAD/93d3d3d///93d3d/8AAA//d3d3d3f///d3d3f/AAAA// + d3d3d//w/3d3d3/wAAAA//d3d3//AP93d3d/8AAAAA//d3f/8AD/d3d3f/AAAAAA//d//wAA/4iIiI/w + AAAAAA////AAAP//////8AAAAAAA//8AAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAP// + //8AAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAD/8AAA//AAAP/wAA + Dn8AAAw/AAAIHwAAAA8AAAAHAAAAAwAfgAEAHwAAAB8AAAAfgAEAH8ADAB/gBwAf8A8AH/gfAB/8P/// + /n//////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA + gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA + AAAAAAAAD////////wAPd393f3d/AA93f3d/d38AD3d/d393fwAP////////AA93f3d/AAAAD3d/d38A + 8AAPd393fw9/AA//////93fwD3d/AA93d38Pd38AAPd38A93fwAAD38AD///AAAA8AAAAAAAAAAAAP// + AAD//wAAgAMAAIADAACAAwAAgAMAAIADAACAPwAAgDcAAIAjAACAAQAAg4AAAIPBAACD4wAAg/cAAP// + AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAEJCQgCGhoYAycnJAPb2 + 9gD5+fkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQE + BAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEBAQQEAAAABAQBAQEB + AQEBBAQBAQEBAQEBBAQBAQEBAQEBBAQAAAAEBAEBAQEBAQEEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAQE + AQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEBAQQEAAAABAQBAQEBAQEBBAQBAQEBAQEBBAQBAQEBAQEBBAQA + AAAEBAEBAQEBAQEEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAQEBAQEB + AQQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQE + BAQEBAQEBAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEAAAAAAAAAAAAAAAABAQBAQEBAQEBBAQBAQEBAQEB + BAQAAAAAAAAAAAAAAAAEBAEBAQEBAQEEBAEBAQEBAQEEBAAAAAAAAAAAAAAAAAQEAQEBAQEBAQQEAQEB + AQEBAQQEAAAABQUAAAAAAAAABAQBAQEBAQEBBAQBAQEBAQEBBAQAAAUEBAUAAAAAAAAEBAEBAQEBAQEE + BAEBAQEBAQEEBAAFBAQEBAUAAAAAAAQEAQEBAQEBAQQEAQEBAQEBAQQEBQQEAgIEBAUAAAAABAQEBAQE + BAQEBAQEBAQEBAQEBAQEBAIBAQIEBAUAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAQEBAQIEBAUAAAQE + AQEBAQEBAQQEAAAAAAAABQQEAgEBAQEBAQIEBAUABAQBAQEBAQEBBAQAAAAAAAUEBAIBAQEBAQEBAQIE + BAUEBAEBAQEBAQEEBAAAAAAABQQEAgEBAQEBAQEBAgQEBQQEAQEBAQEBAQQEAAAAAAAABQQEAgEBAQEB + AQIEBAUABAQBAQEBAQEBBAQAAAAAAAAABQQEAgEBAQECBAQFAAAEBAEBAQEBAQEEBAAAAAAAAAAABQQE + AgEBAgQEBQAAAAQEAQEBAQEBAQQEAAAAAAAAAAAABQQEAgIEBAUAAAAABAQDAwMDAwMDBAQAAAAAAAAA + AAAABQQEBAQFAAAAAAAEBAQEBAQEBAQEBAAAAAAAAAAAAAAABQQEBQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAABwAA + AAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAA//AAAP/wAAD/8AAA5/AAAMPwAA + CB8AAAAPAAAABwAAAAMAH4ABAB8AAAAfAAAAH4ABAB/AAwAf4AcAH/APAB/4HwAf/D////5//////ygA + AAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAQkJCAGRkZACGhoYA6+vrAPb2 + 9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAABQUFBQUFBQUFBQUFBQAAAAUBAQEFAQEBBQEBAQUAAAAFAQEBBQEBAQUBAQEF + AAAABQEBAQUBAQEFAQEBBQAAAAUFBQUFBQUFBQUFBQUAAAAFAQEBBQEBAQUAAAAAAAAABQEBAQUBAQEF + AAAFAAAAAAUBAQEFAQEBBQAEAwQAAAAFBQUFBQUFBQUEAgECBAAABQEBAQUAAAAFAwEBAQMFAAUBAQEF + AAAAAAQCAQIEAAAFAQEBBQAAAAAABAMEAAAABQUFBQUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAP// + AAD//wAAgAMAAIADAACAAwAAgAMAAIADAACAPwAAgDcAAIAjAACAAQAAg4AAAIPBAACD4wAAg/cAAP// + AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/wAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/AAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/wAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAA9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAA + AAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/wAA + AAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAD29vaf9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv/29vb/9vb2/wAAAAAAAAAA9vb2n/b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC//b29v/29vb/AAAAAPb29p/29vb/9vb2//b29v/29vb/9vb2nwAAAAAAAAAAAAAAAAAA + AAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v/29vaf9vb2//b29v+Ghob/hoaG//b29v/29vb/9vb2nwAA + AAAAAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/hoaG/0JCQv9CQkL/hoaG//b2 + 9v/29vb/9vb2nwAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2/4aGhv9CQkL/QkJC/0JC + Qv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAAAAD29vb/9vb2/0JCQv9CQkL/QkJC/0JC + Qv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2n/b29v/29vb/hoaG/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2n/b29v/29vb/QkJC/0JC + Qv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b2 + 9v+Ghob/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv+Ghob/9vb2//b29v/29vaf9vb2//b2 + 9v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b29v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/hoaG//b29v/29vb/9vb2nwAA + AAD29vb/9vb2/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv/29vb/9vb2/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv9CQkL/QkJC/4aGhv/29vb/9vb2//b2 + 9p8AAAAAAAAAAPb29v/29vb/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/QkJC//b29v/29vb/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/QkJC/0JCQv+Ghob/9vb2//b2 + 9v/29vafAAAAAAAAAAAAAAAA9vb2//b29v9CQkL/QkJC/0JCQv9CQkL/QkJC/0JCQv9CQkL/9vb2//b2 + 9v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b29v+Ghob/hoaG//b2 + 9v/29vb/9vb2nwAAAAAAAAAAAAAAAAAAAAD29vb/9vb2/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJ + yf/29vb/9vb2/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vaf9vb2//b2 + 9v/29vb/9vb2//b29p8AAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/9vb2//b29v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD29vaf9vb2//b29v/29vafAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vb2QPb29kD29vZA9vb2QPb2 + 9kD29vZA9vb2QPb29kD29vZA9vb2QPb29kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD29vaf9vb2nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + //8AAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAD/8AAA//AAAP/wAA + Dn8AAAw/AAAIHwAAAA8AAAAHAAAAAwAfgAEAHwAAAB8AAAAfgAEAH8ADAB/gBwAf8A8AH/gfAB/8PwAf + /n//////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 + 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v8AAAAAAAAAAAAA + AAD29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAAAAAAA9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAAAAAAAAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b2 + 9v8AAAAAAAAAAAAAAAD29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAA9vb2/0JCQv9CQkL/QkJC//b29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAD29vYgAAAAAAAAAAAAAAAAAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAD29vZg9vb2//b29mAAAAAAAAAAAAAAAAD29vb/QkJC/0JCQv9CQkL/9vb2/0JCQv9CQkL/QkJC//b2 + 9v/29vZg6+vr/4aGhv/r6+v/9vb2YAAAAAAAAAAA9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 + 9v/29vb/6+vr/2RkZP9CQkL/ZGRk/+vr6//29vZgAAAAAPb29v9CQkL/QkJC/0JCQv/29vb/AAAAAAAA + AAD29vYg9vb2/4aGhv9CQkL/QkJC/0JCQv+Ghob/9vb27wAAAAD29vb/QkJC/0JCQv9CQkL/9vb2/wAA + AAAAAAAAAAAAAPb29mDr6+v/ZGRk/0JCQv9kZGT/6urq7/b29jAAAAAA9vb2/0JCQv9CQkL/QkJC//b2 + 9v8AAAAAAAAAAAAAAAAAAAAA9vb2YOvr6/+Ghob/6urq7/b29jAAAAAAAAAAAPb29v/29vb/9vb2//b2 + 9v/29vb/AAAAAAAAAAAAAAAAAAAAAAAAAAD29vZg9vb27/b29jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAIAD + AACAAwAAgAMAAIADAACAAwAAgDcAAIAjAACAAQAAgAAAAIMAAACDgAAAg8EAAIPjAAD//wAA + + + \ No newline at end of file diff --git a/ClientsLibrary/ClientsLibrary.csproj b/ClientsLibrary/ClientsLibrary.csproj index 61116c8..839b402 100644 --- a/ClientsLibrary/ClientsLibrary.csproj +++ b/ClientsLibrary/ClientsLibrary.csproj @@ -49,12 +49,19 @@ - + + Form - + FormDownloading.cs + + Form + + + FormShowMachineId.cs + Form @@ -78,9 +85,12 @@ - + FormDownloading.cs + + FormShowMachineId.cs + FormLogView.cs diff --git a/ClientsLibrary/RegistryEditor_5838.ico b/ClientsLibrary/RegistryEditor_5838.ico new file mode 100644 index 0000000000000000000000000000000000000000..7e7fe7e5d277d117af1fb9098f483f79b25cdc0d GIT binary patch literal 10134 zcmeHNJ8l~>5FJUY*hP{xa)4-oG_HblDQ)-wIfDx$@Cl+)3m6dGZ#YX))Q6};FDT0nP$%@WOZ1tD4i0SputW5z zN5BdAK3(q z6-`J^lgR`?VV+bJ+=Af2LwxZH##EWIjwflU$GZOQ#^JeReY`ebP5%v zZ?aMKQ>IgRF&o*ONkqtjjt5DBf=dgf+<=1g3&5;U*Z1{_4U|9QkonjP2Mz@j&*kOi zSJQX#a&)F|Zm~^*y_)&z0dBK8s=atgp)c}!MD+5AXnz3v)cNSqAny>57~%E=W8e2^ zFimOjYe0kFM@8{x1nPp<`2i$@$U4u_4woE@8VJ_4sc=Pep>>XIaiMfL;>Xik5?h%o?2tfHPEJl}JRZ}{%?&*~JkaCgqXl-?T?Td;*xC&6e%4l!rUK(8n75lG z>DUr#Yz5wsfd%sev$E8r?SJt;j+Lf_{r8i^DFkuAq7cFXce_p@oSkl`;}n88U{O&1 zZNTi@t|;Td$1B)+m=~wYLC`;y3U&g%e*|egl=HK}c9QDNmlYh0*GJD5g|mk$zh#E( z{LK{#as$<o449UU|JV#jtE%_NTeqVi11O3)Q0I z=T7>-uS6%rEj~ke5IfNc)uJPOx{l=*zkUqjTkudVI+|D7>*nV;Vq@^k7WUZ?Ha+FlGn zZuSAa<5+3q^l=wMEw`_~j{ds752iur_x;SI;JEtgd>tvN<;4ALU8BB^cE*_OXfW z5#m?AGsbzp)@#J=-}kK7WbbejyXL>Wy}gIshZuY9gL$>B*mDe8c-$|*IsYZEk1x`1 U{619uHztSk3l=owKQe6l7x*Vn9smFU literal 0 HcmV?d00001 diff --git a/ClientsLibrary/UserClient.cs b/ClientsLibrary/UserClient.cs index d625cbe..3455c38 100644 --- a/ClientsLibrary/UserClient.cs +++ b/ClientsLibrary/UserClient.cs @@ -38,7 +38,7 @@ namespace ClientsLibrary /// /// 服务器的IP地址,默认为127.0.0.1,可用于单机调试,云服务器端:117.48.203.204 /// - public static string ServerIp { get; } = "127.0.0.1";//用于测试的云服务器地址 + public static string ServerIp { get; } = "117.48.203.204";//用于测试的云服务器地址 /// diff --git a/CommonLibrary/BasicSupport/SoftSettings.cs b/CommonLibrary/BasicSupport/SoftSettings.cs index 4659d43..7bd8fc8 100644 --- a/CommonLibrary/BasicSupport/SoftSettings.cs +++ b/CommonLibrary/BasicSupport/SoftSettings.cs @@ -48,8 +48,7 @@ namespace CommonLibrary /// public string Announcement { get; set; } = "测试公告"; /// - /// 是否允许账户登录 - /// 超级管理员账户除外 + /// 是否允许账户登录,超级管理员账户除外 /// public bool Can_Account_Login { get; set; } = true; /// diff --git a/软件系统客户端Wpf/LoginWindow.xaml b/软件系统客户端Wpf/LoginWindow.xaml index 6f6f4df..f756fec 100644 --- a/软件系统客户端Wpf/LoginWindow.xaml +++ b/软件系统客户端Wpf/LoginWindow.xaml @@ -88,8 +88,8 @@ - 版本号: - V1.0.0 + 版本号: + V1.0.0 本软件著作权归某某所有 diff --git a/软件系统客户端Wpf/LoginWindow.xaml.cs b/软件系统客户端Wpf/LoginWindow.xaml.cs index 870c54f..08bbfb6 100644 --- a/软件系统客户端Wpf/LoginWindow.xaml.cs +++ b/软件系统客户端Wpf/LoginWindow.xaml.cs @@ -28,14 +28,60 @@ namespace 软件系统客户端Wpf /// public partial class LoginWindow : Window { + #region Constructor + public LoginWindow() { InitializeComponent(); + // 加载本地保存的数据 UserClient.JsonSettings.FileSavePath = AppDomain.CurrentDomain.BaseDirectory + @"JsonSettings.txt"; UserClient.JsonSettings.LoadByFile(); } + #endregion + + #region Window Load + + private void Window_Loaded(object sender, RoutedEventArgs e) + { + WindowToolTip.Opacity = 0; + TextBlockSoftName.Text = CommonLibrary.Resource.StringResouce.SoftName; + TextBlockSoftVersion.Text = UserClient.CurrentVersion.ToString(); + TextBlockSoftCopyright.Text = $"本软件著作权归{CommonLibrary.Resource.StringResouce.SoftCopyRight}所有"; + + + // 上次登录为7天以前则清除账户密码 + if ((DateTime.Now - UserClient.JsonSettings.LoginTime).TotalDays < 7) + { + //加载数据 + NameTextBox.Text = UserClient.JsonSettings.LoginName ?? ""; + PasswordBox.Password = UserClient.JsonSettings.Password ?? ""; + Remember.IsChecked = UserClient.JsonSettings.Password != ""; + } + //初始化输入焦点 + if (UserClient.JsonSettings.Password != "") LoginButton.Focus(); + else if (UserClient.JsonSettings.LoginName != "") PasswordBox.Focus(); + else NameTextBox.Focus(); + + + // 加载原先保存的主题配色 + if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"Palette.txt")) + { + using (StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + @"Palette.txt", Encoding.UTF8)) + { + string temp = sr.ReadToEnd(); + MaterialDesignThemes.Wpf.Palette obj = JObject.Parse(temp).ToObject(); + new PaletteHelper().ReplacePalette(obj); + } + } + } + + #endregion + + #region Login Click + + private void Button_Click(object sender, RoutedEventArgs e) { //启动线程登录 @@ -66,10 +112,11 @@ namespace 软件系统客户端Wpf ThreadAccountLogin.Start(); } + + #endregion + #region 账户验证的逻辑块 - - private string UserName = string.Empty; private string UserPassword = string.Empty; private bool IsChecked = false; @@ -86,183 +133,63 @@ namespace 软件系统客户端Wpf //定义委托 Action message_show = delegate (string message) { - SetInformationString(message); + Dispatcher.Invoke(new Action(() => + { + SetInformationString(message); + })); }; Action start_update = delegate { - //需要该exe支持,否则将无法是实现自动版本控制 - string update_file_name = AppDomain.CurrentDomain.BaseDirectory + @"软件自动更新.exe"; - try + Dispatcher.Invoke(new Action(() => { - System.Diagnostics.Process.Start(update_file_name); - Environment.Exit(0);//退出系统 - } - catch - { - MessageBox.Show("更新程序启动失败,请检查文件是否丢失,联系管理员获取。"); - } + //需要该exe支持,否则将无法是实现自动版本控制 + string update_file_name = AppDomain.CurrentDomain.BaseDirectory + @"软件自动更新.exe"; + try + { + System.Diagnostics.Process.Start(update_file_name); + Environment.Exit(0);//退出系统 + } + catch + { + MessageBox.Show("更新程序启动失败,请检查文件是否丢失,联系管理员获取。"); + } + })); }; Action thread_finish = delegate { - UISettings(true); + Dispatcher.Invoke(new Action(() => + { + UISettings(true); + })); }; - //延时 - Thread.Sleep(400); - //请求指令头数据,该数据需要更具实际情况更改 - OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.维护检查); - if (result.IsSuccess) + // 启动密码验证 + if (AccountLogin.AccountLoginServer( + message_show, + start_update, + thread_finish, + UserName, + UserPassword, + IsChecked, + "wpf")) { - byte[] temp = Encoding.Unicode.GetBytes(result.Content); - //例如返回结果为1说明允许登录,0则说明服务器处于维护中,并将信息显示 - if (result.Content != "1") + //启动主窗口 + Dispatcher.Invoke(new Action(() => { - Dispatcher.Invoke(message_show, result.Content.Substring(1)); - Dispatcher.Invoke(thread_finish); + DialogResult = true; return; - } + })); } - else - { - //访问失败 - Dispatcher.Invoke(message_show, result.Message); - Dispatcher.Invoke(thread_finish); - return; - } - - - - //检查账户 - Dispatcher.Invoke(message_show, "正在检查账户..."); - - //延时 - Thread.Sleep(400); - - //=================================================================================== - // 根据实际情况校验,选择数据库校验或是将用户名密码发至服务器校验 - // 以下展示了服务器校验的方法,如您需要数据库校验,请删除下面并改成SQL访问验证的方式 - - //包装数据 - JObject json = new JObject - { - { UserAccount.UserNameText, new JValue(UserName) }, - { UserAccount.PasswordText, new JValue(UserPassword) }, - { UserAccount.LoginWayText, new JValue("wpf") } - }; - result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.账户检查, json.ToString()); - if (result.IsSuccess) - { - //服务器应该返回账户的信息 - UserAccount account = JObject.Parse(result.Content).ToObject(); - if (!account.LoginEnable) - { - //不允许登录 - Dispatcher.Invoke(message_show, account.ForbidMessage); - Dispatcher.Invoke(thread_finish); - return; - } - UserClient.UserAccount = account; - } - else - { - //访问失败 - Dispatcher.Invoke(message_show, result.Message); - Dispatcher.Invoke(thread_finish); - return; - } - - //登录成功,进行保存用户名称和密码 - UserClient.JsonSettings.LoginName = UserName; - UserClient.JsonSettings.Password = IsChecked ? UserPassword : ""; - UserClient.JsonSettings.LoginTime = DateTime.Now; - UserClient.JsonSettings.SaveToFile(); - - - //版本验证 - Dispatcher.Invoke(message_show, "正在验证版本..."); - - //延时 - Thread.Sleep(400); - - result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.更新检查); - if (result.IsSuccess) - { - //服务器应该返回服务器的版本号 - SystemVersion sv = new SystemVersion(result.Content); - //系统账户跳过低版本检测 - if (UserClient.UserAccount.UserName != "admin") - { - if (UserClient.CurrentVersion != sv) - { - //保存新版本信息 - UserClient.JsonSettings.IsNewVersionRunning = true; - UserClient.JsonSettings.SaveToFile(); - //和当前系统版本号不一致,启动更新 - Dispatcher.Invoke(start_update); - return; - } - } - else - { - if (UserClient.CurrentVersion < sv) - { - //保存新版本信息 - UserClient.JsonSettings.IsNewVersionRunning = true; - UserClient.JsonSettings.SaveToFile(); - //和当前系统版本号不一致,启动更新 - Dispatcher.Invoke(start_update); - return; - } - } - } - else - { - //访问失败 - Dispatcher.Invoke(message_show, result.Message); - Dispatcher.Invoke(thread_finish); - return; - } - - - //================================================================================ - //验证结束后,根据需要是否下载服务器的数据,或是等到进入主窗口下载也可以 - //如果有参数决定主窗口的显示方式,那么必要在下面向服务器请求数据 - //以下展示了初始化参数的功能 - Dispatcher.Invoke(message_show, "正在下载参数..."); - - //延时 - Thread.Sleep(400); - - - result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.参数下载); - if (result.IsSuccess) - { - //服务器返回初始化的数据,此处进行数据的提取,有可能包含了多个数据 - json = Newtonsoft.Json.Linq.JObject.Parse(result.Content); - //例如公告数据 - UserClient.Announcement = SoftBasic.GetValueFromJsonObject(json, nameof(UserClient.Announcement), ""); - - } - else - { - //访问失败 - Dispatcher.Invoke(message_show, result.Message); - Dispatcher.Invoke(thread_finish); - return; - } - - //启动主窗口 - Dispatcher.Invoke(new Action(() => - { - DialogResult = true; - return; - })); + } #endregion + #region User Interface + + private void UISettings(bool enable) { NameTextBox.IsEnabled = enable; @@ -302,39 +229,7 @@ namespace 软件系统客户端Wpf LoginButton.Focus(); } - private void Window_Loaded(object sender, RoutedEventArgs e) - { - WindowToolTip.Opacity = 0; - TextBlockSoftName.Text = CommonLibrary.Resource.StringResouce.SoftName; - TextBlockSoftVersion.Text = UserClient.CurrentVersion.ToString(); - TextBlockSoftCopyright.Text = $"本软件著作权归{CommonLibrary.Resource.StringResouce.SoftCopyRight}所有"; - - // 上次登录为7天以前则清除账户密码 - if ((DateTime.Now - UserClient.JsonSettings.LoginTime).TotalDays < 7) - { - //加载数据 - NameTextBox.Text = UserClient.JsonSettings.LoginName ?? ""; - PasswordBox.Password = UserClient.JsonSettings.Password ?? ""; - Remember.IsChecked = UserClient.JsonSettings.Password != ""; - } - //初始化输入焦点 - if (UserClient.JsonSettings.Password != "") LoginButton.Focus(); - else if (UserClient.JsonSettings.LoginName != "") PasswordBox.Focus(); - else NameTextBox.Focus(); - - - - if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"Palette.txt")) - { - using (StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + @"Palette.txt", Encoding.UTF8)) - { - string temp = sr.ReadToEnd(); - MaterialDesignThemes.Wpf.Palette obj = JObject.Parse(temp).ToObject(); - new PaletteHelper().ReplacePalette(obj); - } - } - } private void NameTextBox_KeyDown(object sender, KeyEventArgs e) { @@ -345,5 +240,19 @@ namespace 软件系统客户端Wpf { if (e.Key == Key.Enter) Button_Click(null, new RoutedEventArgs()); } + + + private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + using (FormShowMachineId form = new FormShowMachineId()) + { + form.ShowDialog(); + } + } + + #endregion + + + } } diff --git a/软件系统客户端模版/FormLogin.Designer.cs b/软件系统客户端模版/FormLogin.Designer.cs index 22f6984..8f44cf3 100644 --- a/软件系统客户端模版/FormLogin.Designer.cs +++ b/软件系统客户端模版/FormLogin.Designer.cs @@ -35,7 +35,7 @@ namespace 软件系统客户端模版 this.textBox_userName = new System.Windows.Forms.TextBox(); this.textBox_password = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); - this.userButton_login = new UserButton(); + this.userButton_login = new HslCommunication.Controls.UserButton(); this.label_version = new System.Windows.Forms.Label(); this.label_copyright = new System.Windows.Forms.Label(); this.label_status = new System.Windows.Forms.Label(); @@ -106,6 +106,7 @@ namespace 软件系统客户端模版 // label_version // this.label_version.AutoSize = true; + this.label_version.Cursor = System.Windows.Forms.Cursors.Hand; this.label_version.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label_version.ForeColor = System.Drawing.Color.Gray; this.label_version.Location = new System.Drawing.Point(1, 176); @@ -113,6 +114,7 @@ namespace 软件系统客户端模版 this.label_version.Size = new System.Drawing.Size(44, 17); this.label_version.TabIndex = 6; this.label_version.Text = "版本:"; + this.label_version.Click += new System.EventHandler(this.label_version_Click); // // label_copyright // diff --git a/软件系统客户端模版/FormLogin.cs b/软件系统客户端模版/FormLogin.cs index 947305a..dd08e35 100644 --- a/软件系统客户端模版/FormLogin.cs +++ b/软件系统客户端模版/FormLogin.cs @@ -146,193 +146,75 @@ namespace 软件系统客户端模版 private void ThreadCheckAccount() { // 定义委托 + + // 消息显示委托 Action message_show = delegate (string message) - { - label_status.Text = message; - }; + { + if (IsHandleCreated) Invoke(new Action(() => + { + label_status.Text = message; + })); + }; + // 启动更新委托 Action start_update = delegate { - // 需要该exe支持,否则将无法是实现自动版本控制 - string update_file_name = Application.StartupPath + @"\软件自动更新.exe"; - try + if (IsHandleCreated) Invoke(new Action(() => { - System.Diagnostics.Process.Start(update_file_name); - Environment.Exit(0);//退出系统 - } - catch - { - MessageBox.Show("更新程序启动失败,请检查文件是否丢失,联系管理员获取。"); - } + // 需要该exe支持,否则将无法是实现自动版本控制 + string update_file_name = Application.StartupPath + @"\软件自动更新.exe"; + try + { + System.Diagnostics.Process.Start(update_file_name); + Environment.Exit(0);//退出系统 + } + catch + { + MessageBox.Show("更新程序启动失败,请检查文件是否丢失,联系管理员获取。"); + } + })); }; + // 结束的控件使能委托 Action thread_finish = delegate { - UISettings(true); + if (IsHandleCreated) Invoke(new Action(() => + { + UISettings(true); + })); }; - // 延时 - Thread.Sleep(200); - - // 请求指令头数据,该数据需要更具实际情况更改 - OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.维护检查); - if(result.IsSuccess) + // 启动密码验证 + if(AccountLogin.AccountLoginServer( + message_show, + start_update, + thread_finish, + textBox_userName.Text, + textBox_password.Text, + checkBox_remeber.Checked, + "winform")) { - byte[] temp = Encoding.Unicode.GetBytes(result.Content); - // 例如返回结果为1说明允许登录,0则说明服务器处于维护中,并将信息显示 - if (result.Content != "1") + // 启动主窗口 + if (IsHandleCreated) Invoke(new Action(() => { - if (IsHandleCreated) Invoke(message_show, result.Content.Substring(1)); - if (IsHandleCreated) Invoke(thread_finish); + DialogResult = DialogResult.OK; return; - } + })); } - else - { - // 访问失败 - if (IsHandleCreated) Invoke(message_show, result.Message); - if (IsHandleCreated) Invoke(thread_finish); - return; - } - - - - // 检查账户 - if (IsHandleCreated) Invoke(message_show, "正在检查账户..."); - else return; - - // 延时 - Thread.Sleep(200); - - //=================================================================================== - // 根据实际情况校验,选择数据库校验或是将用户名密码发至服务器校验 - // 以下展示了服务器校验的方法,如您需要数据库校验,请删除下面并改成SQL访问验证的方式 - - // 包装数据 - JObject json = new JObject - { - { UserAccount.UserNameText, new JValue(textBox_userName.Text) }, - { UserAccount.PasswordText, new JValue(textBox_password.Text) }, - { UserAccount.LoginWayText, new JValue("winform") }, - { UserAccount.DeviceUniqueID, new JValue(UserClient.JsonSettings.SystemInfo) } - }; - result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.账户检查, json.ToString()); - if (result.IsSuccess) - { - // 服务器应该返回账户的信息 - UserAccount account = JObject.Parse(result.Content).ToObject(); - if(!account.LoginEnable) - { - // 不允许登录 - if (IsHandleCreated) Invoke(message_show, account.ForbidMessage); - if (IsHandleCreated) Invoke(thread_finish); - return; - } - UserClient.UserAccount = account; - } - else - { - // 访问失败 - if (IsHandleCreated) Invoke(message_show, result.Message); - if (IsHandleCreated) Invoke(thread_finish); - return; - } - - // 登录成功,进行保存用户名称和密码 - UserClient.JsonSettings.LoginName = textBox_userName.Text; - UserClient.JsonSettings.Password = checkBox_remeber.Checked ? textBox_password.Text : ""; - UserClient.JsonSettings.LoginTime = DateTime.Now; - UserClient.JsonSettings.SaveToFile(); - - - // 版本验证 - if (IsHandleCreated) Invoke(message_show, "正在验证版本..."); - else return; - - // 延时 - Thread.Sleep(200); - - result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.更新检查); - if (result.IsSuccess) - { - // 服务器应该返回服务器的版本号 - SystemVersion sv = new SystemVersion(result.Content); - // 系统账户跳过低版本检测,该做法存在一定的风险,需要开发者仔细确认安全隐患 - if (UserClient.UserAccount.UserName != "admin") - { - if (UserClient.CurrentVersion != sv) - { - // 保存新版本信息 - UserClient.JsonSettings.IsNewVersionRunning = true; - UserClient.JsonSettings.SaveToFile(); - // 和当前系统版本号不一致,启动更新 - if (IsHandleCreated) Invoke(start_update); - return; - } - } - else - { - if (UserClient.CurrentVersion < sv) - { - // 保存新版本信息 - UserClient.JsonSettings.IsNewVersionRunning = true; - UserClient.JsonSettings.SaveToFile(); - // 和当前系统版本号不一致,启动更新 - if (IsHandleCreated) Invoke(start_update); - return; - } - } - } - else - { - // 访问失败 - if (IsHandleCreated) Invoke(message_show, result.Message); - if (IsHandleCreated) Invoke(thread_finish); - return; - } - - - // - // 验证结束后,根据需要是否下载服务器的数据,或是等到进入主窗口下载也可以 - // 如果有参数决定主窗口的显示方式,那么必要在下面向服务器请求数据 - // 以下展示了初始化参数的功能 - - if (IsHandleCreated) Invoke(message_show, "正在下载参数..."); - else return; - - // 延时 - Thread.Sleep(200); - - - result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.参数下载); - if(result.IsSuccess) - { - // 服务器返回初始化的数据,此处进行数据的提取,有可能包含了多个数据 - json = JObject.Parse(result.Content); - // 例如公告数据 - UserClient.Announcement = SoftBasic.GetValueFromJsonObject(json, nameof(UserClient.Announcement), ""); - if (json[nameof(UserClient.SystemFactories)] != null) - { - UserClient.SystemFactories = json[nameof(UserClient.SystemFactories)].ToObject>(); - } - } - else - { - // 访问失败 - if (IsHandleCreated) Invoke(message_show, result.Message); - if (IsHandleCreated) Invoke(thread_finish); - return; - } - - // 启动主窗口 - if (IsHandleCreated) Invoke(new Action(() => - { - DialogResult = DialogResult.OK; - return; - })); } + #endregion + #region 显示本机ID + + private void label_version_Click(object sender, EventArgs e) + { + using (FormShowMachineId form = new FormShowMachineId()) + { + form.ShowDialog(); + } + } + #endregion } } diff --git a/软件系统浏览器模版/Controllers/AccountController.cs b/软件系统浏览器模版/Controllers/AccountController.cs index 66577c5..c5211c8 100644 --- a/软件系统浏览器模版/Controllers/AccountController.cs +++ b/软件系统浏览器模版/Controllers/AccountController.cs @@ -44,7 +44,7 @@ namespace 软件系统浏览器模版.Controllers public ActionResult Login(FormCollection fc) { //请求指令头数据,该数据需要更具实际情况更改 - OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.维护检查); + OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.维护检查); if (result.IsSuccess) { //例如返回结果为1说明允许登录,0则说明服务器处于维护中,并将信息显示