<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>海棠云螭的博客</title><link>https://www.haitangyunchi.cn/</link><description>Good Luck To You!</description><item><title>GenshinConvert授权码</title><link>https://www.haitangyunchi.cn/post/5.html</link><description>&lt;p&gt;65D5DA733F6C4A62BFB5542A9837BE9B---已激活&lt;/p&gt;&lt;p&gt;0E1E36BBC5A948C7A37D05856FB240D3---已激活&lt;/p&gt;&lt;p&gt;F9DC6BD279AF4E639DF51D43B076227F---已激活&lt;/p&gt;&lt;p&gt;26F5984547B64A918B20936E6FF609B6---已激活&lt;/p&gt;&lt;p&gt;0E9FA37CF1E94DE3B8AA173FECAE1B42---已激活&lt;/p&gt;&lt;p&gt;B337EFF766D94964933D5A5BCB0344D8---已激活&lt;/p&gt;&lt;p&gt;A5F4FC9D93C94ED0ACFEE218F034862B---已激活&lt;/p&gt;&lt;p&gt;CC33F3E4B4F84437BB6A45D753FEB34F---未激活&lt;/p&gt;&lt;p&gt;3C49B2157B1541279431D1E8AFFBE9BF---未激活&lt;/p&gt;&lt;p&gt;7EC77DE8C5EF4B3CB4B0B6449DB18161---未激活&lt;/p&gt;&lt;p&gt;DD368CE05BCC4A019A34D20E7EEFC3D0---未激活&lt;/p&gt;&lt;p&gt;3A9B133A56124661B25CA58E466A67ED---未激活&lt;/p&gt;&lt;p&gt;642D02A57AD1468893251B81C7BCC7F0---未激活&lt;/p&gt;&lt;p&gt;2E9ECD1242CA458A9D9715DA2C6B31A7---未激活&lt;/p&gt;&lt;p&gt;5EE84DD41A8D4F43BDD2DB8FDB615C78---未激活&lt;/p&gt;&lt;p&gt;5DE37F21508A42549BB67AB9CA2F729E---未激活&lt;/p&gt;&lt;p&gt;167A6557B65744198D96BBCA869E8D53---已激活&lt;/p&gt;&lt;p&gt;2305873E1EBA434081525114D5F63B19---未激活&lt;/p&gt;&lt;p&gt;7784A0A4D14444EE9EA8A336C37F9ADD---已激活&lt;/p&gt;&lt;p&gt;B98D3BE6B78048E1B5A39D148FE5545C---已激活&lt;/p&gt;&lt;p&gt;D3F618ADB434476DAD148D40009E0FBC---未激活&lt;/p&gt;&lt;p&gt;342D301FD22441579D22B3783D1AFF16---未激活&lt;/p&gt;&lt;p&gt;C36A4AA6D8F44D86861ADB45968EA1FC---未激活&lt;/p&gt;&lt;p&gt;5EA1D05F70204B7DBCBDFCFA3B1DA838---已激活&lt;/p&gt;&lt;p&gt;5C8D4AC0920B4D54849FCB63ADDDECE9---未激活&lt;/p&gt;&lt;p&gt;0617D09B4F924B3E85C8D75B3D721139---已激活&lt;/p&gt;&lt;p&gt;85849C08D6914C2F989C363C56A55E2C---未激活&lt;/p&gt;&lt;p&gt;47F6F1747BC94E439A12CA1B12618536---未激活&lt;/p&gt;&lt;p&gt;A6FF997053C44D9D8441CC52D36DC9CB---未激活&lt;/p&gt;&lt;p&gt;87330809D69D47D8B75CEBA4EA022734---未激活&lt;/p&gt;&lt;p&gt;C487497379E3494491D1AB4C9C284E6B---已激活&lt;/p&gt;&lt;p&gt;A45FA96B72B249BB8D35D89A05D1C740---未激活&lt;/p&gt;&lt;p&gt;3C5C39A104324A38A6EEBB48947F2FC1---未激活&lt;/p&gt;&lt;p&gt;9F1D99914A9D4EFDB9B554D5D0CF446D---未激活&lt;/p&gt;&lt;p&gt;3ED382E706E44F5599121C986B45846C---未激活&lt;/p&gt;&lt;p&gt;FA52C75D9BD643A4B4D6CD9D11FE1D04---未激活&lt;/p&gt;&lt;p&gt;D54ADC13DC2B4CADA956D777329ACB39---未激活&lt;/p&gt;&lt;p&gt;EA35B92727D04C939A597A41CD58EBB1---未激活&lt;/p&gt;&lt;p&gt;A0344646B5134BC18E049403B2E81436---已激活&lt;/p&gt;&lt;p&gt;361897DDAC234309B1422C23F7842386---未激活&lt;/p&gt;&lt;p&gt;964FBF3B307D4055B26D453C80AE5D9E---未激活&lt;/p&gt;&lt;p&gt;30C4498032AD4A519E46B93EC952D07F---未激活&lt;/p&gt;&lt;p&gt;D41959A5564349B49E9EE643E6216CE8---未激活&lt;/p&gt;&lt;p&gt;418A08884A6A4E18B7D495095629CD26---未激活&lt;/p&gt;&lt;p&gt;187143ACE9674C34B9DB607F847D22B2---已激活&lt;/p&gt;&lt;p&gt;40926940FA944027A74039EA99848F21---未激活&lt;/p&gt;&lt;p&gt;25CD6974FECD4224BC8DCF7541219456---已激活&lt;/p&gt;&lt;p&gt;1948C89B0BF2452F84BB1749DAFFB459---未激活&lt;/p&gt;&lt;p&gt;AB10392B49EF43168B55E149568EDC4D---未激活&lt;/p&gt;&lt;p&gt;3A69BE2E93604C5C82F9EEA0E9216FD4---未激活&lt;/p&gt;&lt;p&gt;7DB30856916A4635A8C2529B4138B22B---已激活&lt;/p&gt;&lt;p&gt;5E90C0043B844A0EBE33AF6EAF112246---未激活&lt;/p&gt;&lt;p&gt;5BF6A36CBA694365A5A5DDCA94F4FE10---未激活&lt;/p&gt;&lt;p&gt;318D57DB9C424172A8E929D49E9C707E---未激活&lt;/p&gt;&lt;p&gt;8B5F075DDB2148EFA38E58AA9790CB40---已激活&lt;/p&gt;&lt;p&gt;226BFF1C7C7C448DA47410FDD156B1CE---已激活&lt;/p&gt;&lt;p&gt;DF638341866843B6BA3C584633702206---已激活&lt;/p&gt;&lt;p&gt;CEC44A8FD7DC4BD6994A3B75D627E559---已激活&lt;/p&gt;&lt;p&gt;6EFBD617325F46AB98E3E0EB25707D54---已激活&lt;/p&gt;&lt;p&gt;36B22461134145168013050E5CBF0313---已激活&lt;/p&gt;&lt;p&gt;57C470FFD0E44FC6ABBAE791B66D239C---已激活&lt;/p&gt;&lt;p&gt;BE7D365409F849C1B5F8397A508550AD---已激活&lt;/p&gt;&lt;p&gt;DD739E90006547EB9C9034F466F9279E---已激活&lt;/p&gt;&lt;p&gt;AEADB830A3FE4FB98CC42DE71BA862EF---已激活&lt;/p&gt;&lt;p&gt;5F5DBA4BC7A24071B60E32B6AB21B6D7---已激活&lt;/p&gt;&lt;p&gt;B995958ECCC34724885B6E7A39862D44---已激活&lt;/p&gt;&lt;p&gt;C8F11EB245E24F2497834BB558EDDB44---已激活&lt;/p&gt;&lt;p&gt;87D1C27498C24553867F5F65F1350DB8---已激活&lt;/p&gt;&lt;p&gt;1661C92193104FA0AE8C63A157A63FC3---已激活&lt;/p&gt;&lt;p&gt;BA9279787C9C4F05973BA67B141C1B74---未激活&lt;/p&gt;&lt;p&gt;A5C88D88320843EB88956B6104581ABF---未激活&lt;/p&gt;&lt;p&gt;0127C6580F224A2C862B8841E06B92A9---未激活&lt;/p&gt;&lt;p&gt;C426A9851664411D99F73A6C1709650C---未激活&lt;/p&gt;&lt;p&gt;59956297B7D840FEB93695B46CADE855---未激活&lt;/p&gt;&lt;p&gt;0462B805D1414CE4886E08A55421D611---未激活&lt;/p&gt;&lt;p&gt;6E2D97578E8147D29253CB7DF007065C---未激活&lt;/p&gt;&lt;p&gt;47BD0288ADC94AA3B50B0A534714D3A2---未激活&lt;/p&gt;&lt;p&gt;6EB8978A52814DA6A8E50CA8B6E02CA7---未激活&lt;/p&gt;&lt;p&gt;4C9FF0AAEC7E42C0807AC9A44BA22C0C---未激活&lt;/p&gt;&lt;p&gt;A8BEE18C5A574A8897FCAF4FFADE09F6---未激活&lt;/p&gt;&lt;p&gt;2D6947ADBA9E442D98B88D9E1CFA3F25---未激活&lt;/p&gt;&lt;p&gt;65FA9F4D6F4542BA8874A8636CC7094F---未激活&lt;/p&gt;&lt;p&gt;7CD3D76D5CA04CE3BD529B363AA40221---未激活&lt;/p&gt;&lt;p&gt;29F50ABF7E334F5BA4F8EA9429941C97---未激活&lt;/p&gt;&lt;p&gt;1B95EF80D6534A38B4F7B1976DCC6097---未激活&lt;/p&gt;&lt;p&gt;F89C694FF39F402D92E32DB4BB560674---未激活&lt;/p&gt;&lt;p&gt;19E44F44EE9146FB86175D4429A5E2BD---已激活&lt;/p&gt;&lt;p&gt;6F35820280E74EABAA06C2DA9E22C974---未激活&lt;/p&gt;&lt;p&gt;5403E013E6934FCD870929E97B1078EE---未激活&lt;/p&gt;&lt;p&gt;39B738981C9C4E8A95F100D8AC7DEE0C---已激活&lt;/p&gt;&lt;p&gt;76E1507D848A4E7C878416DF10AA7B76---未激活&lt;/p&gt;&lt;p&gt;14DC647218B947AC9F9F36E46EF07940---未激活&lt;/p&gt;&lt;p&gt;E07E862B15624C758AD27B05E17FF410---未激活&lt;/p&gt;&lt;p&gt;87F3361C1E9D4E2FA681A046CC6FEA26---未激活&lt;/p&gt;&lt;p&gt;7DC5BB8E25394EF3B544684CD0061E33---未激活&lt;/p&gt;&lt;p&gt;A437446265BB4186818B272A51F3B9A0---已激活&lt;/p&gt;&lt;p&gt;A602AA97221441A78805AB0DB6B9677B---已激活&lt;/p&gt;&lt;p&gt;7C0AE811DCAD43B0A44D371A2DABCB34---已激活&lt;/p&gt;&lt;p&gt;C934377F47C346F7BE67FFB52AE857E0---未激活&lt;/p&gt;&lt;p&gt;7ACEAF8749D64CC5BE1CA08C8D59221D---已激活&lt;/p&gt;&lt;p&gt;0A3B1DC9B41B47C8953EC604A3ADA931---已激活&lt;/p&gt;&lt;p&gt;8FCC090C1F08411CB3833AF6346C9091---已激活&lt;/p&gt;&lt;p&gt;1CDEB2CC3F414E84BA894655E753194C---已激活&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 20 Jan 2026 01:07:51 +0800</pubDate></item><item><title>HaiTang.Library.Api2018k 库调用说明文档</title><link>https://www.haitangyunchi.cn/post/3.html</link><description>&lt;h1&gt;HaiTang.Library.Api2018k 库调用说明文档&lt;/h1&gt;&lt;h2&gt;概述&lt;/h2&gt;&lt;p&gt;&lt;code&gt;HaiTang.Library.Api2018k&lt;/code&gt; 是一个用于与 &lt;a href=&quot;http://2018k.cn/&quot;&gt;2018k.cn&lt;/a&gt; 网络验证系统交互的 .NET 类库，提供软件更新、用户管理、卡密验证、云变量操作、后台管理等功能。
库中包含三个主要部分：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Update&lt;/code&gt; 类&lt;/strong&gt;：客户端核心功能，用于获取软件信息、验证卡密、管理用户、操作云变量等。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;AdminSDK&lt;/code&gt; 类&lt;/strong&gt;：后台管理功能，用于登录后台、管理软件、卡密等。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Tools&lt;/code&gt; 工具类&lt;/strong&gt;：提供机器码生成、加密解密、随机字符串、类型转换等辅助方法。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Log&lt;/code&gt; 日志类&lt;/strong&gt;：基于 NLog 的简单日志封装，按天输出到文件。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;所有异步方法均返回 &lt;code&gt;Task&lt;/code&gt; 或 &lt;code&gt;Task&amp;lt;T&amp;gt;&lt;/code&gt;，使用时请使用 &lt;code&gt;await&lt;/code&gt; 或适当方式等待。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;命名空间引用&lt;/h2&gt;&lt;pre&gt;using&amp;nbsp;HaiTang.Library.Api2018k;
using&amp;nbsp;HaiTang.Library.Api2018k.SDK;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;后台管理相关&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;1. &lt;code&gt;Update&lt;/code&gt; 类 – 客户端核心功能&lt;/h2&gt;&lt;h3&gt;1.1 初始化与软件信息&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;InitializationAsync&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;初始化软件实例，获取软件配置信息。此方法是后续大多数方法的前置调用。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;(bool&amp;nbsp;Success,&amp;nbsp;Mysoft?&amp;nbsp;config)&amp;gt;&amp;nbsp;InitializationAsync(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;ID,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;key,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string?&amp;nbsp;Code&amp;nbsp;=&amp;nbsp;null)&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;ID&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;程序实例ID（软件ID），由2018k后台生成&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;key&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;OpenID（开发者密钥），后台获取&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Code&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string?&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;机器码，若为 &lt;code&gt;null&lt;/code&gt; 将自动调用 &lt;code&gt;Tools.GetMachineCodeEx()&lt;/code&gt; 获取本机机器码&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;Success&lt;/code&gt;：是否成功获取有效软件信息（&lt;code&gt;config.author != null&lt;/code&gt;）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;config&lt;/code&gt;：&lt;code&gt;Mysoft&lt;/code&gt; 对象，包含软件全部信息；若失败则为 &lt;code&gt;null&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;异常&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;Exception&lt;/code&gt;：网络请求异常或数据解析异常时抛出，但方法内部已捕获并记录日志，返回 &lt;code&gt;(false, null)&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;//&amp;nbsp;初始化，使用自动获取的机器码
var&amp;nbsp;update&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Update();
var&amp;nbsp;(success,&amp;nbsp;config)&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.InitializationAsync(&amp;quot;soft123&amp;quot;,&amp;nbsp;&amp;quot;your-openid-key&amp;quot;);
if&amp;nbsp;(success)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine($&amp;quot;软件名称：{config.softwareName}&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine($&amp;quot;版本号：{config.versionNumber}&amp;quot;);
}
else
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;初始化失败，请检查网络或软件ID&amp;quot;);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;GetSoftCheck&lt;/code&gt; [过时]&lt;/h4&gt;&lt;p&gt;检查软件实例是否正常。&lt;/p&gt;&lt;pre&gt;[Obsolete(&amp;quot;合并到InitializationAsync()方法中，2027年01月01日正式禁用此方法&amp;quot;,&amp;nbsp;false)]
public&amp;nbsp;async&amp;nbsp;Task&amp;lt;bool&amp;gt;&amp;nbsp;GetSoftCheck()&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;说明&lt;/strong&gt;此方法已过时，建议直接使用 &lt;code&gt;InitializationAsync&lt;/code&gt; 获取完整信息。因为它内部调用 &lt;code&gt;InitializationAsync&lt;/code&gt; 并仅返回成功状态。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;bool&amp;nbsp;isOk&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetSoftCheck();&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;获取软件信息的各个属性方法&lt;/h4&gt;&lt;p&gt;以下方法均从缓存的 &lt;code&gt;Mysoft&lt;/code&gt; 对象中提取特定字段，若缓存失效会自动调用 &lt;code&gt;InitializationAsync&lt;/code&gt; 刷新。&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;方法&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;返回值&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetSoftwareID()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件实例ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetVersionNumber()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件版本号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetSoftwareName()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetVersionInformation()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;版本更新内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetNotice()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;公告信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetDownloadLink()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;下载链接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetNumberOfVisits()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;访问量（字符串形式）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetMiniVersion()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;最低支持版本号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetIsItEffective()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;bool&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密当前是否有效&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetExpirationDate()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密过期时间戳（毫秒）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetRemarks()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;授权备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetNumberOfDays()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;int&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;授权有效天数（永久为 99999）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetNetworkVerificationId()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetTimeStamp()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;long&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;服务器时间戳（毫秒）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetMandatoryUpdate()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;bool&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;是否强制更新&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetSoftwareMd5()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件 MD5&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;version&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetVersionNumber();
bool&amp;nbsp;isEffective&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetIsItEffective();
long&amp;nbsp;serverTime&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetTimeStamp();
Console.WriteLine($&amp;quot;当前版本：{version}，卡密有效：{isEffective}&amp;quot;);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;1.2 云变量操作&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;GetCloudVariables&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;获取指定云变量的值。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;string&amp;gt;&amp;nbsp;GetCloudVariables(string&amp;nbsp;VarName)&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;VarName&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;云变量名称&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;变量值字符串；若变量不存在或获取失败，返回常量 &lt;code&gt;&amp;quot;&amp;lt;空&amp;gt;&amp;quot;&lt;/code&gt;（&lt;code&gt;_error&lt;/code&gt;）。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;bgColor&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetCloudVariables(&amp;quot;background_color&amp;quot;);
if&amp;nbsp;(bgColor&amp;nbsp;!=&amp;nbsp;&amp;quot;&amp;lt;空&amp;gt;&amp;quot;)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine($&amp;quot;背景色设置为：{bgColor}&amp;quot;);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;GetCloudVarArray&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;获取所有云变量，返回一个 JSON 对象。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;string&amp;gt;&amp;nbsp;GetCloudVarArray()&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;格式化后的 JSON 字符串，格式如 &lt;code&gt;{ &amp;quot;key1&amp;quot;: &amp;quot;value1&amp;quot;, &amp;quot;key2&amp;quot;: &amp;quot;value2&amp;quot; }&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;allVars&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetCloudVarArray();
Console.WriteLine(allVars);
//&amp;nbsp;输出：
//&amp;nbsp;{
//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;welcome_message&amp;quot;:&amp;nbsp;&amp;quot;欢迎使用&amp;quot;,
//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;max_users&amp;quot;:&amp;nbsp;&amp;quot;100&amp;quot;
//&amp;nbsp;}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;updateCloudVariables&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;修改或新增云变量。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;(bool&amp;nbsp;success,&amp;nbsp;string&amp;nbsp;message)&amp;gt;&amp;nbsp;updateCloudVariables(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;VarKey,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;Value)&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;VarKey&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;变量名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Value&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;要设置的值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;success&lt;/code&gt;：操作是否成功。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;message&lt;/code&gt;：成功时返回设置的键值对 JSON（如 &lt;code&gt;{&amp;quot;key&amp;quot;:&amp;quot;bg_color&amp;quot;,&amp;quot;value&amp;quot;:&amp;quot;blue&amp;quot;}&lt;/code&gt;），失败时返回错误信息。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;var&amp;nbsp;(ok,&amp;nbsp;msg)&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.updateCloudVariables(&amp;quot;theme&amp;quot;,&amp;nbsp;&amp;quot;dark&amp;quot;);
if&amp;nbsp;(ok)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;云变量更新成功：&amp;quot;&amp;nbsp;+&amp;nbsp;msg);
}
else
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;更新失败：&amp;quot;&amp;nbsp;+&amp;nbsp;msg);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;1.3 卡密操作&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;ActivationKey&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;激活卡密（绑定当前机器码）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;(bool&amp;nbsp;success,&amp;nbsp;string&amp;nbsp;message)&amp;gt;&amp;nbsp;ActivationKey(string&amp;nbsp;authId)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;authId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密ID（从后台获取或用户输入）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;success&lt;/code&gt;：是否激活成功。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;message&lt;/code&gt;：成功返回“授权成功”，失败返回错误原因。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;var&amp;nbsp;(ok,&amp;nbsp;msg)&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.ActivationKey(&amp;quot;1CDEB2CC3F414E84BA894655E753194C&amp;quot;);
if&amp;nbsp;(ok)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MessageBox.Show(&amp;quot;激活成功！&amp;quot;);
}
else
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MessageBox.Show(&amp;quot;激活失败：&amp;quot;&amp;nbsp;+&amp;nbsp;msg);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;CreateNetworkAuthentication&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;创建卡密（需要管理员权限，通常用于后台自动生成）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;string&amp;gt;&amp;nbsp;CreateNetworkAuthentication(int&amp;nbsp;day,&amp;nbsp;string&amp;nbsp;remark,&amp;nbsp;string&amp;nbsp;ID)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;day&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;有效天数（例如 30 表示30天，若要永久可尝试传入 0 或 99999，但需确认后端支持）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;remark&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;ID&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;程序实例ID（软件ID）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;格式化的 JSON 字符串，包含新创建的卡密信息，如：&lt;/p&gt;&lt;pre&gt;{
&amp;nbsp;&amp;nbsp;&amp;quot;code&amp;quot;:&amp;nbsp;200,
&amp;nbsp;&amp;nbsp;&amp;quot;data&amp;quot;:&amp;nbsp;&amp;quot;1CDEB2CC3F414E84BA894655E753194C&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;quot;message&amp;quot;:&amp;nbsp;&amp;quot;请求成功&amp;quot;
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;result&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.CreateNetworkAuthentication(30,&amp;nbsp;&amp;quot;测试卡密&amp;quot;,&amp;nbsp;&amp;quot;soft123&amp;quot;);
Console.WriteLine(result);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;ReplaceBind&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;解绑或换绑机器码。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;(bool&amp;nbsp;success,&amp;nbsp;string&amp;nbsp;message)&amp;gt;&amp;nbsp;ReplaceBind(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;AuthId,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string?&amp;nbsp;Code&amp;nbsp;=&amp;nbsp;null)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;AuthId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Code&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string?&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;新机器码；若为 &lt;code&gt;null&lt;/code&gt; 则执行解绑（清除绑定的机器码）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;success&lt;/code&gt;：操作是否成功。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;message&lt;/code&gt;：成功返回“解|换绑成功”，失败返回错误信息。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;//&amp;nbsp;解绑
var&amp;nbsp;(ok1,&amp;nbsp;msg1)&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.ReplaceBind(&amp;quot;AUTH-123456&amp;quot;);
//&amp;nbsp;换绑到新机器码
string&amp;nbsp;newCode&amp;nbsp;=&amp;nbsp;Tools.GetMachineCodeEx();
var&amp;nbsp;(ok2,&amp;nbsp;msg2)&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.ReplaceBind(&amp;quot;AUTH-123456&amp;quot;,&amp;nbsp;newCode);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;GetRemainingUsageTime&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;获取卡密剩余使用时间。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;long&amp;gt;&amp;nbsp;GetRemainingUsageTime()&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;-1&lt;/code&gt;：永久有效。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;0&lt;/code&gt;：已过期。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;1&lt;/code&gt;：未注册（无有效卡密或未激活）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;&amp;gt;0&lt;/code&gt;：剩余毫秒数。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;long&amp;nbsp;remaining&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetRemainingUsageTime();
if&amp;nbsp;(remaining&amp;nbsp;==&amp;nbsp;-1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;永久授权&amp;quot;);
else&amp;nbsp;if&amp;nbsp;(remaining&amp;nbsp;==&amp;nbsp;0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;已过期&amp;quot;);
else&amp;nbsp;if&amp;nbsp;(remaining&amp;nbsp;==&amp;nbsp;1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;未注册&amp;quot;);
else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine($&amp;quot;剩余：{TimeSpan.FromMilliseconds(remaining).TotalDays:F1}&amp;nbsp;天&amp;quot;);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;GetNetworkCode&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;获取验证码（用于用户注册等需要验证码的场合）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;string&amp;gt;&amp;nbsp;GetNetworkCode()&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;验证码字符串（例如 &lt;code&gt;&amp;quot;8A3F&amp;quot;&lt;/code&gt;）。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;captcha&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetNetworkCode();
Console.WriteLine(&amp;quot;验证码：&amp;quot;&amp;nbsp;+&amp;nbsp;captcha);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;1.4 用户相关方法&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;CustomerRegister&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;注册新用户。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;bool&amp;gt;&amp;nbsp;CustomerRegister(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;email,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;password,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string?&amp;nbsp;nickName&amp;nbsp;=&amp;nbsp;null,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string?&amp;nbsp;avatarUrl&amp;nbsp;=&amp;nbsp;null,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string?&amp;nbsp;captcha&amp;nbsp;=&amp;nbsp;null)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;email&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户邮箱（作为登录账号）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;password&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;密码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;nickName&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string?&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;昵称（可选）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;avatarUrl&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string?&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;头像地址（可选）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;captcha&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string?&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;验证码（可选，需要时从 &lt;code&gt;GetNetworkCode()&lt;/code&gt; 获取）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;注册成功返回 &lt;code&gt;true&lt;/code&gt;，否则 &lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;bool&amp;nbsp;regOk&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.CustomerRegister(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;email:&amp;nbsp;&amp;quot;user@haitangyunchi.com&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;password:&amp;nbsp;&amp;quot;123456&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nickName:&amp;nbsp;&amp;quot;测试用户&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;captcha:&amp;nbsp;await&amp;nbsp;update.GetNetworkCode()
);
if&amp;nbsp;(regOk)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;注册成功&amp;quot;);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;InitializationUserAsync&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;初始化用户会话，获取用户信息。后续用户相关方法需先调用此方法（或确保 &lt;code&gt;Constants.EMAIL&lt;/code&gt; 和 &lt;code&gt;Constants.PASSWORD&lt;/code&gt; 已设置）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;UserInfo&amp;gt;&amp;nbsp;InitializationUserAsync(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;ID,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;key,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;email,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;password)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;ID&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;key&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;OpenID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;email&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户邮箱&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;password&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户密码&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;code&gt;UserInfo&lt;/code&gt; 对象；若失败则返回空对象（所有字段为空）。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;UserInfo&amp;nbsp;user&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.InitializationUserAsync(&amp;quot;soft123&amp;quot;,&amp;nbsp;&amp;quot;your-key&amp;quot;,&amp;nbsp;&amp;quot;user@haitangyunchi.com&amp;quot;,&amp;nbsp;&amp;quot;pass&amp;quot;);
if&amp;nbsp;(!string.IsNullOrEmpty(user.CustomerId))
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine($&amp;quot;欢迎&amp;nbsp;{user.Nickname}&amp;quot;);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;GetUserInfo&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;获取当前已初始化用户的完整信息。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;UserInfo&amp;gt;&amp;nbsp;GetUserInfo()&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;code&gt;UserInfo&lt;/code&gt; 对象（若未初始化，返回空对象）。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;UserInfo&amp;nbsp;info&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetUserInfo();
Console.WriteLine($&amp;quot;用户ID：{info.CustomerId}&amp;quot;);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;用户信息属性获取方法&lt;/h4&gt;&lt;p&gt;以下方法均从 &lt;code&gt;UserInfo&lt;/code&gt; 缓存中提取特定字段。&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;方法&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;返回值&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetUserId()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetUserAvatar()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户头像URL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetUserNickname()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户昵称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetUserEmail()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户邮箱&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetUserBalance()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;int&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;账户余额/剩余天数（需根据业务含义）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetUserLicense()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;bool&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;是否已授权（&lt;code&gt;License == &amp;quot;y&amp;quot;&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetUserTimeCrypt()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Task&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;登录时间戳&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;uid&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetUserId();
int&amp;nbsp;balance&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetUserBalance();
bool&amp;nbsp;licensed&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetUserLicense();&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;Recharge&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;使用卡密为用户充值（增加账户余额/有效期）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;string&amp;gt;&amp;nbsp;Recharge(string&amp;nbsp;AuthId)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;AuthId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密ID&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;接口返回的原始 JSON 字符串。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;rechargeResult&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.Recharge(&amp;quot;8B5F075DDB2148EFA38E58AA9790CB40&amp;quot;);
Console.WriteLine(rechargeResult);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;1.5 消息发送&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;MessageSend&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;发送一条消息到服务器（可用于记录日志或向开发者发送通知）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;string&amp;gt;&amp;nbsp;MessageSend(string&amp;nbsp;message)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;message&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;要发送的消息内容&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;格式化的 JSON 响应。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;response&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.MessageSend(&amp;quot;用户点击了开始按钮&amp;quot;);
Console.WriteLine(response);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;1.6 缓存控制静态方法&lt;/h3&gt;&lt;p&gt;这些方法用于操作 &lt;code&gt;Update&lt;/code&gt; 类内部的静态缓存（软件信息、用户信息），通常不需要手动调用，除非需要强制刷新。&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;方法&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetCachedSoftwareInfo()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;获取缓存的软件信息对象&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;SetCachedSoftwareInfo(bool success, Mysoft softwareInfo)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;设置软件信息缓存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;IsCacheValid()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;检查软件信息缓存是否有效（5分钟内）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;ClearStaticCache()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;清除软件信息缓存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;GetCachedUserInfo()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;获取缓存的用户信息对象&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;SetCachedUserInfo(UserInfo userInfo)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;设置用户信息缓存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;IsUserCacheValid()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;检查用户信息缓存是否有效（5分钟内）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;ClearUserCache()&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;清除用户信息缓存&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;//&amp;nbsp;强制清除缓存，下次获取时会重新请求网络
Update.ClearStaticCache();
Update.ClearUserCache();&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;2. &lt;code&gt;AdminSDK&lt;/code&gt; 类 – 后台管理功能&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;所有方法必须先调用 &lt;code&gt;LoginAsync&lt;/code&gt; 成功登录，否则会抛出 &lt;code&gt;InvalidOperationException&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3&gt;&lt;code&gt;LoginAsync&lt;/code&gt;&lt;/h3&gt;&lt;p&gt;登录后台管理系统。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;(bool&amp;nbsp;Success,&amp;nbsp;string&amp;nbsp;Message)&amp;gt;&amp;nbsp;LoginAsync(string&amp;nbsp;account,&amp;nbsp;string&amp;nbsp;password)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;account&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;后台账号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;password&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;密码&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;Success&lt;/code&gt;：登录是否成功。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;Message&lt;/code&gt;：成功时返回 Token（会自动保存在 &lt;code&gt;Token&lt;/code&gt; 属性中），失败时返回错误信息。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;var&amp;nbsp;admin&amp;nbsp;=&amp;nbsp;new&amp;nbsp;AdminSDK();
var&amp;nbsp;(ok,&amp;nbsp;token)&amp;nbsp;=&amp;nbsp;await&amp;nbsp;admin.LoginAsync(&amp;quot;admin&amp;quot;,&amp;nbsp;&amp;quot;123456&amp;quot;);
if&amp;nbsp;(ok)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;登录成功，Token：&amp;quot;&amp;nbsp;+&amp;nbsp;token);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;&lt;code&gt;GetSoftwareIdsAsync&lt;/code&gt;&lt;/h3&gt;&lt;p&gt;获取软件ID列表。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;List&amp;lt;string&amp;gt;&amp;gt;&amp;nbsp;GetSoftwareIdsAsync(long&amp;nbsp;maxCount&amp;nbsp;=&amp;nbsp;10)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;maxCount&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;最大返回数量（默认10）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;软件ID字符串列表。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;List&amp;lt;string&amp;gt;&amp;nbsp;ids&amp;nbsp;=&amp;nbsp;await&amp;nbsp;admin.GetSoftwareIdsAsync(20);
foreach&amp;nbsp;(string&amp;nbsp;id&amp;nbsp;in&amp;nbsp;ids)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(id);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;&lt;code&gt;GetSoftwareInfoByIdAsync&lt;/code&gt;&lt;/h3&gt;&lt;p&gt;根据软件ID获取详细信息。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;SoftwareInfo&amp;gt;&amp;nbsp;GetSoftwareInfoByIdAsync(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;softwareId,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;maxCount&amp;nbsp;=&amp;nbsp;10)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;softwareId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;maxCount&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;最大查询数量（用于翻页）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;code&gt;SoftwareInfo&lt;/code&gt; 对象，包含软件名称、版本、访问量、下载链接等。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;SoftwareInfo&amp;nbsp;info&amp;nbsp;=&amp;nbsp;await&amp;nbsp;admin.GetSoftwareInfoByIdAsync(&amp;quot;soft123&amp;quot;);
Console.WriteLine($&amp;quot;软件名：{info.SoftwareName}，版本：{info.SoftwareVersion}&amp;quot;);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;&lt;code&gt;GetCardListAsync&lt;/code&gt;&lt;/h3&gt;&lt;p&gt;获取卡密列表。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;List&amp;lt;CardInfo&amp;gt;&amp;gt;&amp;nbsp;GetCardListAsync(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string?&amp;nbsp;softwareId&amp;nbsp;=&amp;nbsp;null,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;long&amp;nbsp;maxCount&amp;nbsp;=&amp;nbsp;50)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;softwareId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string?&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;筛选指定软件的卡密，为 &lt;code&gt;null&lt;/code&gt; 则返回所有&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;maxCount&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;最大返回数量（默认50）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;code&gt;List&amp;lt;CardInfo&amp;gt;&lt;/code&gt;，每个元素包含卡号、状态、机器码、备注、有效期等。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;//&amp;nbsp;获取所有卡密
List&amp;lt;CardInfo&amp;gt;&amp;nbsp;allCards&amp;nbsp;=&amp;nbsp;await&amp;nbsp;admin.GetCardListAsync();
//&amp;nbsp;获取指定软件的卡密
List&amp;lt;CardInfo&amp;gt;&amp;nbsp;softCards&amp;nbsp;=&amp;nbsp;await&amp;nbsp;admin.GetCardListAsync(&amp;quot;soft123&amp;quot;);
foreach&amp;nbsp;(var&amp;nbsp;card&amp;nbsp;in&amp;nbsp;softCards)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine($&amp;quot;{card.CardNumber}&amp;nbsp;-&amp;nbsp;激活：{card.IsActivated}&amp;quot;);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;&lt;code&gt;CreateCardAsync&lt;/code&gt;&lt;/h3&gt;&lt;p&gt;批量创建卡密。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;(bool&amp;nbsp;Success,&amp;nbsp;List&amp;lt;string&amp;gt;&amp;nbsp;CreatedCards)&amp;gt;&amp;nbsp;CreateCardAsync(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;softwareId,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;remarks,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;duration,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;count)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;softwareId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;remarks&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;duration&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;有效天数（0 表示永久）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;count&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;创建数量&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;Success&lt;/code&gt;：操作是否成功。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;CreatedCards&lt;/code&gt;：新生成的卡密列表。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;var&amp;nbsp;(ok,&amp;nbsp;cards)&amp;nbsp;=&amp;nbsp;await&amp;nbsp;admin.CreateCardAsync(&amp;quot;soft123&amp;quot;,&amp;nbsp;&amp;quot;测试卡密&amp;quot;,&amp;nbsp;30,&amp;nbsp;5);
if&amp;nbsp;(ok)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;生成的卡密：&amp;quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach&amp;nbsp;(string&amp;nbsp;c&amp;nbsp;in&amp;nbsp;cards)&amp;nbsp;Console.WriteLine(c);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;&lt;code&gt;CreateSoftwareAsync&lt;/code&gt;&lt;/h3&gt;&lt;p&gt;创建新软件。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;bool&amp;gt;&amp;nbsp;CreateSoftwareAsync(string&amp;nbsp;name,&amp;nbsp;string&amp;nbsp;version)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;初始版本号&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;成功返回 &lt;code&gt;true&lt;/code&gt;，失败返回 &lt;code&gt;false&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;bool&amp;nbsp;created&amp;nbsp;=&amp;nbsp;await&amp;nbsp;admin.CreateSoftwareAsync(&amp;quot;我的软件&amp;quot;,&amp;nbsp;&amp;quot;1.0.0&amp;quot;);
Console.WriteLine(created&amp;nbsp;?&amp;nbsp;&amp;quot;创建成功&amp;quot;&amp;nbsp;:&amp;nbsp;&amp;quot;创建失败&amp;quot;);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;&lt;code&gt;EditSoftwareInfoAsync&lt;/code&gt; [未实现]&lt;/h3&gt;&lt;p&gt;编辑软件信息（预留接口）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;async&amp;nbsp;Task&amp;lt;bool&amp;gt;&amp;nbsp;EditSoftwareInfoAsync(string&amp;nbsp;id,&amp;nbsp;SoftwareInfo&amp;nbsp;updatedInfo)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：此方法目前抛出 &lt;code&gt;NotImplementedException&lt;/code&gt;，请根据实际后端接口自行实现。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr/&gt;&lt;h3&gt;数据模型（AdminSDK）&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;SoftwareInfo&lt;/code&gt;&lt;/h4&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;属性&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;SoftwareName&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;SoftwareVersion&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;版本号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;VisitCount&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;访问量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;UpdateContent&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;更新内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;LowVersion&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;强制更新版本（最低版本）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Md5&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;文件 MD5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;CreateTime&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;创建时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;DownloadUrl&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;下载链接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;ForceUpdate&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;是否强制更新&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Id&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件ID&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;h4&gt;&lt;code&gt;CardInfo&lt;/code&gt;&lt;/h4&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;属性&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;CardNumber&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密编号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;IsActivated&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;是否已激活&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;MachineCode&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;绑定的机器码&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Remarks&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Duration&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;有效天数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;SoftwareId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;所属软件ID&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;hr/&gt;&lt;h2&gt;3. &lt;code&gt;Tools&lt;/code&gt; 工具类&lt;/h2&gt;&lt;h3&gt;3.1 机器码&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;GetMachineCode&lt;/code&gt; [过时]&lt;/h4&gt;&lt;p&gt;获取格式化的 20 位机器码（CPU+主板+盐值）。&lt;/p&gt;&lt;pre&gt;[Obsolete(&amp;quot;请使用&amp;nbsp;GetMachineCodeEx()&amp;nbsp;以获得更好的机器码，2027年01月01日正式禁用此方法&amp;quot;,&amp;nbsp;false)]
public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;GetMachineCode()&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;格式：&lt;code&gt;XXXXX-XXXXX-XXXXX-XXXXX-XXXXX&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;oldCode&amp;nbsp;=&amp;nbsp;Tools.GetMachineCode();&amp;nbsp;//&amp;nbsp;例如&amp;nbsp;&amp;quot;AB12C-DE34F-GH56I-JK78L-MN90P&amp;quot;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;GetMachineCodeEx&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;获取更安全的 128 位（SHA512）机器码。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;GetMachineCodeEx()&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;128 字符十六进制字符串。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;machineCode&amp;nbsp;=&amp;nbsp;Tools.GetMachineCodeEx();
Console.WriteLine(machineCode);&amp;nbsp;//&amp;nbsp;输出类似&amp;nbsp;&amp;quot;9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08...&amp;quot;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;3.2 随机字符串与盐值&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;GenerateRandomString&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;生成指定类型和长度的随机字符串。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;GenerateRandomString(int&amp;nbsp;length,&amp;nbsp;int&amp;nbsp;type&amp;nbsp;=&amp;nbsp;0)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;length&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;长度&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;类型：0=字母数字（默认），1=字母，2=数字，3=大写字母，4=大写字母+数字&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;随机字符串。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;code&amp;nbsp;=&amp;nbsp;Tools.GenerateRandomString(8,&amp;nbsp;4);&amp;nbsp;//&amp;nbsp;8位大写字母+数字，如&amp;nbsp;&amp;quot;A3F9B2K1&amp;quot;
string&amp;nbsp;password&amp;nbsp;=&amp;nbsp;Tools.GenerateRandomString(12,&amp;nbsp;0);&amp;nbsp;//&amp;nbsp;12位混合字符&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h4&gt;&lt;code&gt;GenerateSalt&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;生成密码学安全的随机盐值（Base64）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;GenerateSalt(int&amp;nbsp;length&amp;nbsp;=&amp;nbsp;64)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;length&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;随机字节长度（默认64，）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;Base64 编码的盐值。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;salt&amp;nbsp;=&amp;nbsp;Tools.GenerateSalt();&amp;nbsp;		//&amp;nbsp;生成64字符的Base64字符串
string&amp;nbsp;customSalt&amp;nbsp;=&amp;nbsp;Tools.GenerateSalt(32);	//&amp;nbsp;生成32字符的Base64字符串&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;3.3 哈希&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;Sha256&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;计算字符串的 SHA-256 哈希值（十六进制大写）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Sha256(string&amp;nbsp;input)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;input&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;输入字符串&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;64 字符的十六进制字符串。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;hash&amp;nbsp;=&amp;nbsp;Tools.Sha256(&amp;quot;hello&amp;quot;);
Console.WriteLine(hash);&amp;nbsp;//&amp;nbsp;2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h4&gt;&lt;code&gt;Sha512&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;计算字符串的 SHA-512 哈希值（十六进制大写）。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Sha512(string&amp;nbsp;input)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;128 字符的十六进制字符串。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;hash&amp;nbsp;=&amp;nbsp;Tools.Sha512(&amp;quot;hello&amp;quot;);
Console.WriteLine(hash);	//&amp;nbsp;9B71D224BD62F3785D96D46AD3EA3D73319BFBC2890CAADAE2DFF72519673CA72323C3D99BA5C11D7C7ACC6E...&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;3.4 加密解密&lt;/h3&gt;&lt;h4&gt;使用十六进制密钥的 AES 加密/解密&lt;/h4&gt;&lt;p&gt;密钥必须为 32 字节的十六进制字符串（64字符），例如由 &lt;code&gt;Tools.Sha256(&amp;quot;password&amp;quot;)&lt;/code&gt; 生成。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Encrypt(string&amp;nbsp;plainText,&amp;nbsp;string&amp;nbsp;key)
public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Decrypt(string&amp;nbsp;cipherText,&amp;nbsp;string&amp;nbsp;key)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;plainText&lt;/code&gt;：明文。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;cipherText&lt;/code&gt;：Base64 密文（包含16字节随机IV）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;key&lt;/code&gt;：32字节十六进制密钥（64字符）。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;加密返回 Base64 字符串，解密返回明文。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;key&amp;nbsp;=&amp;nbsp;Tools.Sha256(&amp;quot;mySecretKey&amp;quot;);&amp;nbsp;//&amp;nbsp;64字符十六进制
string&amp;nbsp;encrypted&amp;nbsp;=&amp;nbsp;Tools.Encrypt(&amp;quot;敏感数据&amp;quot;,&amp;nbsp;key);
Console.WriteLine(encrypted);
string&amp;nbsp;decrypted&amp;nbsp;=&amp;nbsp;Tools.Decrypt(encrypted,&amp;nbsp;key);
Console.WriteLine(decrypted);&amp;nbsp;//&amp;nbsp;输出&amp;nbsp;&amp;quot;敏感数据&amp;quot;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h4&gt;使用密码+盐值的 AES 加密/解密（PBKDF2派生密钥）&lt;/h4&gt;&lt;p&gt;更安全的加密方式，推荐用于用户密码加密。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Encrypt(string&amp;nbsp;plainText,&amp;nbsp;string&amp;nbsp;password,&amp;nbsp;string&amp;nbsp;salt)
public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Decrypt(string&amp;nbsp;cipherText,&amp;nbsp;string&amp;nbsp;password,&amp;nbsp;string&amp;nbsp;salt)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;password&lt;/code&gt;：用户提供的密码。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;salt&lt;/code&gt;：盐值（建议使用 &lt;code&gt;GenerateSalt()&lt;/code&gt; 生成）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;其他同前。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;password&amp;nbsp;=&amp;nbsp;&amp;quot;userPass123&amp;quot;;
string&amp;nbsp;salt&amp;nbsp;=&amp;nbsp;Tools.GenerateSalt();
string&amp;nbsp;encrypted&amp;nbsp;=&amp;nbsp;Tools.Encrypt(&amp;quot;秘密信息&amp;quot;,&amp;nbsp;password,&amp;nbsp;salt);
string&amp;nbsp;decrypted&amp;nbsp;=&amp;nbsp;Tools.Decrypt(encrypted,&amp;nbsp;password,&amp;nbsp;salt);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;3.5 类型转换&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;ToBoolean&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;将多种常见字符串转换为布尔值。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;ToBoolean(string&amp;nbsp;value,&amp;nbsp;out&amp;nbsp;bool&amp;nbsp;result)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;value&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;输入字符串&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;result&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;out bool&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;转换成功后的布尔值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;返回值&lt;/strong&gt;&lt;code&gt;true&lt;/code&gt; 表示转换成功，&lt;code&gt;false&lt;/code&gt; 表示无法识别。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;支持的值&lt;/strong&gt;（不区分大小写）&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;真：&lt;code&gt;true&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;yes&lt;/code&gt;, &lt;code&gt;y&lt;/code&gt;, &lt;code&gt;on&lt;/code&gt;, &lt;code&gt;enable&lt;/code&gt;, &lt;code&gt;enabled&lt;/code&gt;, &lt;code&gt;active&lt;/code&gt;, &lt;code&gt;t&lt;/code&gt;, &lt;code&gt;ok&lt;/code&gt;, &lt;code&gt;okay&lt;/code&gt;, &lt;code&gt;correct&lt;/code&gt;, &lt;code&gt;right&lt;/code&gt;, &lt;code&gt;positive&lt;/code&gt;, &lt;code&gt;affirmative&lt;/code&gt;, &lt;code&gt;aye&lt;/code&gt;, &lt;code&gt;si&lt;/code&gt;, &lt;code&gt;da&lt;/code&gt;, &lt;code&gt;ja&lt;/code&gt;, &lt;code&gt;はい&lt;/code&gt;, &lt;code&gt;是&lt;/code&gt;, &lt;code&gt;真&lt;/code&gt;, &lt;code&gt;✓&lt;/code&gt;, &lt;code&gt;√&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;假：&lt;code&gt;false&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;no&lt;/code&gt;, &lt;code&gt;n&lt;/code&gt;, &lt;code&gt;off&lt;/code&gt;, &lt;code&gt;disable&lt;/code&gt;, &lt;code&gt;disabled&lt;/code&gt;, &lt;code&gt;inactive&lt;/code&gt;, &lt;code&gt;f&lt;/code&gt;, &lt;code&gt;cancel&lt;/code&gt;, &lt;code&gt;wrong&lt;/code&gt;, &lt;code&gt;incorrect&lt;/code&gt;, &lt;code&gt;negative&lt;/code&gt;, &lt;code&gt;nay&lt;/code&gt;, &lt;code&gt;no way&lt;/code&gt;, &lt;code&gt;non&lt;/code&gt;, &lt;code&gt;nein&lt;/code&gt;, &lt;code&gt;нет&lt;/code&gt;, &lt;code&gt;いいえ&lt;/code&gt;, &lt;code&gt;否&lt;/code&gt;, &lt;code&gt;假&lt;/code&gt;, &lt;code&gt;✗&lt;/code&gt;, &lt;code&gt;×&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;if&amp;nbsp;(Tools.ToBoolean(&amp;quot;yes&amp;quot;,&amp;nbsp;out&amp;nbsp;bool&amp;nbsp;b1))&amp;nbsp;Console.WriteLine(b1);&amp;nbsp;//&amp;nbsp;True
if&amp;nbsp;(Tools.ToBoolean(&amp;quot;0&amp;quot;,&amp;nbsp;out&amp;nbsp;bool&amp;nbsp;b2))&amp;nbsp;Console.WriteLine(b2);&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;False
if&amp;nbsp;(Tools.ToBoolean(&amp;quot;maybe&amp;quot;,&amp;nbsp;out&amp;nbsp;bool&amp;nbsp;b3))&amp;nbsp;{&amp;nbsp;}&amp;nbsp;else&amp;nbsp;Console.WriteLine(&amp;quot;无法转换&amp;quot;);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h3&gt;3.6 更新程序&lt;/h3&gt;&lt;h4&gt;&lt;code&gt;upgrade&lt;/code&gt;&lt;/h4&gt;&lt;p&gt;启动外部更新程序 &lt;code&gt;upgrade.exe&lt;/code&gt; 进行软件更新。&lt;/p&gt;&lt;pre&gt;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;upgrade(string&amp;nbsp;downloadUrl)&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;名称&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;downloadUrl&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;新版本下载地址&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;说明&lt;/strong&gt;需要在程序目录下放置 &lt;code&gt;upgrade.exe&lt;/code&gt;，该程序将接收下载地址和当前进程路径作为参数。
若 &lt;code&gt;upgrade.exe&lt;/code&gt; 不存在，方法静默返回。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;string&amp;nbsp;downloadUrl&amp;nbsp;=&amp;nbsp;await&amp;nbsp;update.GetDownloadLink();
Tools.upgrade(downloadUrl);
//&amp;nbsp;启动更新程序后，当前进程应尽快退出
Environment.Exit(0);&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;4. &lt;code&gt;Log&lt;/code&gt; 日志类&lt;/h2&gt;&lt;p&gt;基于 NLog 的静态日志类，日志文件保存在 &lt;code&gt;应用程序根目录/Logs/yyyy-MM-dd.log&lt;/code&gt;。&lt;/p&gt;&lt;h3&gt;方法&lt;/h3&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;方法&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Debug(string message)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;记录调试信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Info(string message)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;记录一般信息&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Warn(string message)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;记录警告&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Error(string message)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;记录错误&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Error(Exception ex, string message)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;记录错误及异常详情&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Fatal(string message)&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;记录致命错误&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;Log.Info(&amp;quot;应用程序启动&amp;quot;);
try
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;业务代码
}
catch&amp;nbsp;(Exception&amp;nbsp;ex)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.Error(ex,&amp;nbsp;&amp;quot;操作失败&amp;quot;);
}&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;hr/&gt;&lt;h2&gt;附录：常用数据模型&lt;/h2&gt;&lt;h3&gt;&lt;code&gt;Mysoft&lt;/code&gt; (软件信息)&lt;/h3&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;属性&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;author&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;作者&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;softwareMd5&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件 MD5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;softwareName&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;softwareId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;软件ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;versionNumber&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;版本号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;mandatoryUpdate&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;是否强制更新&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;numberOfVisits&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;访问量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;miniVersion&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;最低版本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;timeStamp&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;服务器时间戳&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;networkVerificationId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;isItEffective&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;卡密是否有效&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;numberOfDays&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;有效天数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;networkVerificationRemarks&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;授权备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;expirationDate&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;过期时间戳&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;downloadLink&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;下载链接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;notice&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;公告&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;versionInformation&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;更新内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;bilibiliLink&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;B站链接（固定值）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;h3&gt;&lt;code&gt;UserInfo&lt;/code&gt; (用户信息)&lt;/h3&gt;&lt;figure class=&quot;table-figure&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;th style=&quot;text-align:left;&quot;&gt;属性&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;类型&lt;/th&gt;&lt;th style=&quot;text-align:left;&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;CustomerId&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;用户ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;AvatarUrl&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;头像URL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Nickname&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;昵称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Email&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;邮箱&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Balance&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;余额/剩余天数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;License&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;授权标识（ true/ false）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;TimeCrypt&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;登录时间戳&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;Timestamp&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align:left;&quot;&gt;服务器时间戳&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;</description><pubDate>Sat, 06 Dec 2025 16:28:43 +0800</pubDate></item><item><title>欢迎使用Z-BlogPHP！</title><link>https://www.haitangyunchi.cn/post/1.html</link><description>&lt;p&gt;欢迎使用Z-Blog，这是程序自动生成的文章，您可以删除或是编辑它:)&lt;/p&gt;&lt;p&gt;系统生成了一个留言本和一篇《欢迎使用Z-BlogPHP！》，祝您使用愉快！&lt;/p&gt;</description><pubDate>Fri, 24 Oct 2025 00:04:40 +0800</pubDate></item></channel></rss>