当前位置: 首页 > news >正文

C# 获取计算机信息

目录

一、本机信息

1、本机名

2、获得本机MAC地址

3、获得计算机名

4、显示器分辨率

5、主显示器分辨率

6、系统路径

二、操作系统信息

1、操作系统类型

2、获得操作系统位数

3、获得操作系统版本

三、处理器信息

1 、处理器个数

四、CPU信息

1、CPU的个数

2、CPU版本信息

3、CPU名称信息

4、CPU序列号

5、CPU制造厂商

6、CPU频率

五、显卡信息

1、显卡PNPDeviceID

六、硬盘信息

1、设备硬盘的卷标号

2、硬盘的大小

3、硬盘序列号

七、主板信息

1、主板序列号

2、主板制造厂商

3、主板编号

4、主板型号

八、内存信息

1、物理内存大小

2、内存利用率

九、网卡信息

1、网卡硬件地址

2、网卡地址

3、适配器信息

十、声卡信息

1、声卡PNPDeviceID

十一、其他信息

1、鼠标按钮个数

十二、网络信息

1、网络连接

2、IP地址


一、本机信息

1、本机名

 public static string getLocalhostName(){return Environment.GetEnvironmentVariable("COMPUTERNAME");}

2、获得本机MAC地址

public static string getLocalhostMac() {string mac = null;ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");ManagementObjectCollection queryCollection = query.Get();foreach (ManagementObject mo in queryCollection) {if (mo["IPEnabled"].ToString() == "True")mac = mo["MacAddress"].ToString();}return (mac);
}

3、获得计算机名

public static string getComputerName() {return Environment.MachineName;
}

4、显示器分辨率

public static string getResolution() {return SystemInformation.PrimaryMonitorMaximizedWindowSize.Width + " x " + SystemInformation.PrimaryMonitorMaximizedWindowSize.Height;
}

5、主显示器分辨率

public static string getMainResolution() {return SystemInformation.PrimaryMonitorSize.Width + " x " + SystemInformation.PrimaryMonitorSize.Height;
}

6、系统路径

[DllImport("kernel32")]
public static extern void GetSystemDirectory(StringBuilder SysDir, int count);public static string getSystemPath() {const int nChars = 128;StringBuilder Buff = new StringBuilder(nChars);GetSystemDirectory(Buff, nChars);return Buff.ToString();
}

二、操作系统信息

1、操作系统类型

public static string getSystemType() {string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc) {st = mo["SystemType"].ToString();}return st;
}

2、获得操作系统位数

public static string getOSBit() {if (Environment.Is64BitOperatingSystem) {return "64bit."} else {return  "32bit.";}
}

3、获得操作系统版本

public static string getOSVersion()  {return Environment.OSVersion.VersionString;
}

三、处理器信息

1 、处理器个数

public static string getProcessorCount()  {return Environment.ProcessorCount.ToString();
}

四、CPU信息

1、CPU的个数

public static int getCpuCount() {try {using (ManagementClass mCpu = new ManagementClass("Win32_Processor")) {ManagementObjectCollection cpus = mCpu.GetInstances();return cpus.Count;}} catch { }return -1;
}

2、CPU版本信息

public static string getCpuVersion() {string st = "";ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_Processor");foreach (ManagementObject mo in mos.Get()) {st = mo["Version"].ToString();}return st;
}

3、CPU名称信息

public static string getCpuName() {string st = "";ManagementObjectSearcher driveID = new ManagementObjectSearcher("Select * from Win32_Processor");foreach (ManagementObject mo in driveID.Get()) {st = mo["Name"].ToString();}return st;
}

4、CPU序列号

public static string getCpuSerialNumber() {string strCpu = null;ManagementClass myCpu = new ManagementClass("win32_Processor");ManagementObjectCollection myCpuConnection = myCpu.GetInstances();foreach (ManagementObject myObject in myCpuConnection) {strCpu = myObject.Properties["Processorid"].Value.ToString();break;}return strCpu;
}

5、CPU制造厂商

public static string getCPUManufacturer() {string st = "";ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_Processor");foreach (ManagementObject mo in mos.Get()) {st = mo["Manufacturer"].ToString();}return st;
}

6、CPU频率

这里之所以使用string类型的数组,主要是因为cpu的多核

public static string[] getCpuMHZ() {ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection cpus = mc.GetInstances(); string[] mHz = new string[cpus.Count];int c = 0;ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");foreach (ManagementObject mo in mySearch.Get()) {mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString();c++;}mc.Dispose();mySearch.Dispose();return mHz;
}

五、显卡信息

1、显卡PNPDeviceID

public static string getVideoPNPID() {string st = "";ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_VideoController");foreach (ManagementObject mo in mos.Get()) {st = mo["PNPDeviceID"].ToString();}return st;
}

六、硬盘信息

1、设备硬盘的卷标号

public static string getDiskVolumeSerialNumber() {ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");disk.Get();return disk.GetPropertyValue("VolumeSerialNumber").ToString();
}

2、硬盘的大小

public static string getSizeOfDisk() {ManagementClass mc = new ManagementClass("Win32_DiskDrive");ManagementObjectCollection moj = mc.GetInstances();foreach (ManagementObject m in moj) {return m.Properties["Size"].Value.ToString();}return "-1";
}

3、硬盘序列号

public static string getHardDiskSerialNumber() {try {ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");string sHardDiskSerialNumber = "";foreach (ManagementObject mo in searcher.Get()) {sHardDiskSerialNumber = mo["SerialNumber"].ToString().Trim();break;}return sHardDiskSerialNumber;}catch {return "";}
}

七、主板信息

1、主板序列号

public static string getBIOSSerialNumber() {try {ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS");string sBIOSSerialNumber = "";foreach (ManagementObject mo in searcher.Get()) {sBIOSSerialNumber = mo["SerialNumber"].ToString().Trim();}return sBIOSSerialNumber;}catch {return "";}
}

2、主板制造厂商

public static string getBoardManufacturer() {SelectQuery query = new SelectQuery("Select * from Win32_BaseBoard");ManagementObjectSearcher mos = new ManagementObjectSearcher(query);ManagementObjectCollection.ManagementObjectEnumerator data = mos.Get().GetEnumerator();data.MoveNext();ManagementBaseObject board = data.Current;return board.GetPropertyValue("Manufacturer").ToString();
}

3、主板编号

public static string getBoardID() {string st = "";ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");foreach (ManagementObject mo in mos.Get()) {st = mo["SerialNumber"].ToString();}return st;
}

4、主板型号

public static string getBoardType() {string st = "";ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");foreach (ManagementObject mo in mos.Get()) {st = mo["Product"].ToString();}return st;
}

八、内存信息

1、物理内存大小

public static string getPhysicalMemory() {string st = "";ManagementClass mc = new ManagementClass("Win32_ComputerSystem");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc) {st = mo["TotalPhysicalMemory"].ToString();}return st;
}

2、内存利用率

[DllImport("kernel32")]
private static extern void GlobalMemoryStatus(ref StorageInfo memibfo);[StructLayout(LayoutKind.Sequential)]
public struct StorageInfo //此处全是以字节为单位 {public uint dwMemoryLoad;//内存使用率
}public static string getUtilizationRate() {StorageInfo memInfor = new StorageInfo();GlobalMemoryStatus(ref memInfor);return memInfor.dwMemoryLoad.ToString("0.0");
}

九、网卡信息

1、网卡硬件地址

public static string getMacAddress() {string mac = "";ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc) {if ((bool)mo["IPEnabled"] == true) {mac = mo["MacAddress"].ToString();break;}}return mac;
}

2、网卡地址

public static string getNetCardMACAddress() {try {ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))");string NetCardMACAddress = "";foreach (ManagementObject mo in searcher.Get()) {NetCardMACAddress = mo["MACAddress"].ToString().Trim();}return NetCardMACAddress;}catch {return "";}
}

3、适配器信息

public static NetworkInterface[] getNetWorkInfo() {NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();return adapters;
}
// 设置内容向文本框
public void setContent() {tb_net_work_adapter_num.Text = adapters.Length.ToString();int index = 0;foreach (NetworkInterface adapter in adapters) {index++;//显示网络适配器描述信息、名称、类型、速度、MAC 地址tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("---------------------第" + index + "个适配器信息---------------------") + "\n";tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("描述信息:" + adapter.Name) + "\n";tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("类型:" + adapter.NetworkInterfaceType) + "\n";tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("速度:" + adapter.Speed / 1000 / 1000 + "MB") + "\n";tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("MAC 地址:" + adapter.GetPhysicalAddress()) + "\n";//获取IPInterfaceProperties实例IPInterfaceProperties adapterProperties = adapter.GetIPProperties();//获取并显示DNS服务器IP地址信息IPAddressCollection dnsServers = adapterProperties.DnsAddresses;if (dnsServers.Count > 0) {foreach (IPAddress dns in dnsServers) {tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("DNS 服务器IP地址:" + dns + "\n");}} else {tb_net_wark_adapter_info.Text = tb_net_wark_adapter_info.Text + ("DNS 服务器IP地址:" + "\n");}}
}

结果样例
---------------------第1个适配器信息---------------------
描述信息:以太网
类型:Ethernet
速度:0MB
MAC 地址:9883892C3E84
DNS 服务器IP地址:192.168.0.0
---------------------第2个适配器信息---------------------
描述信息:VirtualBox Host-Only Network #3
类型:Ethernet
速度:1000MB
MAC 地址:0A002700000B
DNS 服务器IP地址:fec0:0:0:ffff::1%1
DNS 服务器IP地址:fec0:0:0:ffff::2%1
DNS 服务器IP地址:fec0:0:0:ffff::3%1

十、声卡信息

1、声卡PNPDeviceID

public static string getSoundPNPID() {string st = "";ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_SoundDevice");foreach (ManagementObject mo in mos.Get()) {st = mo["PNPDeviceID"].ToString();}return st;
}

十一、其他信息

1、鼠标按钮个数

public static string getMouseButtons()  {return SystemInformation.MouseButtons.ToString();
}

十二、网络信息

1、网络连接

public static string getIsHasNet() {if (SystemInformation.Network) {return  "网络连接:已连接";} else {return "网络连接:未连接";}
}

2、IP地址

public static string getIP() {try {string st = "";ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc) {if ((bool)mo["IPEnabled"] == true) {System.Array ar;ar = (System.Array)(mo.Properties["IpAddress"].Value);st = ar.GetValue(0).ToString();break;}}moc = null;mc = null;return st;} catch {return "unknow";}
}

相关文章:

C# 获取计算机信息

目录 一、本机信息 1、本机名 2、获得本机MAC地址 3、获得计算机名 4、显示器分辨率 5、主显示器分辨率 6、系统路径 二、操作系统信息 1、操作系统类型 2、获得操作系统位数 3、获得操作系统版本 三、处理器信息 1 、处理器个数 四、CPU信息 1、CPU的个数 2、…...

第4章 python深度学习——(波斯美女)

第4章 机器学习基础 本章包括以下内容&#xff1a; 除分类和回归之外的机器学习形式 评估机器学习模型的规范流程 为深度学习准备数据 特征工程 解决过拟合 处理机器学习问题的通用工作流程 学完第 3 章的三个实例&#xff0c;你应该已经知道如何用神经网络解决分类问题和回归…...

[UI5 常用控件] 03.Icon, Avatar,Image

文章目录 前言1. Icon2. Avatar2.1 displayShape2.2 initials2.3 backgroundColor2.4 Size2.5 fallbackIcon2.6 badgeIcon2.7 badgeValueState2.8 active 3. Image 前言 本章节记录常用控件Title,Link,Label。 其路径分别是&#xff1a; sap.m.Iconsap.m.Avatarsap.m.Image 1…...

python爬虫demo——爬取历史平均房价

简单爬取历史房价 需求 爬取的网站汇聚数据的城市房价 https://fangjia.gotohui.com/ 功能 选择城市 https://fangjia.gotohui.com/fjdata-3 需要爬取年份的数据&#xff0c;等等 https://fangjia.gotohui.com/years/3/2018/ 使用bs4模块 使用bs4模块快速定义需要爬取的…...

力扣0100——相同的树

相同的树 难度&#xff1a;简单 题目描述 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例1 输入&#xff1a; p [1,2,3], q [1,2,3]…...

Vue-40、Vue中TodoList案例

1、MyHeader.vue <template><div class"todo-header"><input type"text" placeholder"请输入你的任务名称&#xff0c;按回车键确认" v-model"title" keyup.enter"add"></div> </template>&…...

dvwa靶场文件上传high

dvwa upload high 第一次尝试&#xff08;查看是否是前端验证&#xff09;第二次尝试我的上传思路最后发现是图片码上传修改配置文件尝试蚁&#x1f5e1;连接菜刀连接 第一次尝试&#xff08;查看是否是前端验证&#xff09; 因为我是初学者&#xff0c;所以无法从代码审计角度…...

​ PaddleHub 首页图像 - 文字识别chinese_ocr_db_crnn_server​

PaddleHub 便捷地获取PaddlePaddle生态下的预训练模型&#xff0c;完成模型的管理和一键预测。配合使用Fine-tune API&#xff0c;可以基于大规模预训练模型快速完成迁移学习&#xff0c;让预训练模型能更好地服务于用户特定场景的应用 零基础快速开始WindowsLinuxMac Paddle…...

如何在Win系统安装Jupyter Notbook并实现无公网ip远程访问本地笔记

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中&#xff0c;使用最多的无疑就是各种函数、图表、…...

腾讯云轻量应用Windows服务器如何搭建幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏&#xff0c;在帕鲁的世界&#xff0c;玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活&#xff0c;也…...

AR眼镜_ar智能眼镜显示方案|光学方案

AR眼镜是一种智能眼镜&#xff0c;能够将虚拟现实和现实世界相结合&#xff0c;使人们能够在日常生活中体验和参与虚拟现实。然而&#xff0c;AR智能眼镜的制造成本高&#xff0c;开发周期长。要实现AR眼镜的各项功能&#xff0c;需要良好的硬件条件&#xff0c;而AR智能眼镜的…...

C语言之猜凶手

一、题目 日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。B说&#xff1a;是C。C说&#xff1a;是D。D说&#xff1a;C在胡说 已知3个人说了真话&#xff0c;1个人说的是假话。 现在…...

#Uniapp: uni.previewImage(OBJECT) 预览图片

uni.previewImage(OBJECT) 预览图片。 api地址 媒体-图片 示例 handlePreviewImg(current) {const urls this.rightList.map(x > x.icon)uni.previewImage({urls,current})}OBJECT 参数说明 参数名类型必填说明平台差异说明countNumber否最多可以选择的图片张数&#…...

SpringCloud-高级篇(十六)

前面学习了Lua的语法&#xff0c;就可以在nginx去做编程&#xff0c;去实现nginx类里面的业务&#xff0c;查询Redis&#xff0c;查询tomcat等 &#xff0c;业务逻辑的编写依赖于其他组件&#xff0c;这些组件会用到OpenResty的工具去实现 &#xff08;1&#xff09;安装OpenRe…...

【C++基础】C++内存处理机制面试题(以面促学 )

&#x1f308;欢迎来到C基础专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mysq…...

arcgis 批量删除字段

一、打开ArcToolbox-数据管理工具-字段-删除字段。 二、在输入表中选择要删除字段的要素&#xff0c;在删除字段栏中选择要删除的字段&#xff0c;点击确认即可。...

尚无忧球馆助教系统源码,助教小程序源码,助教源码,陪练系统源码

特色功能&#xff1a; 不同助教服务类型选择 助教申请&#xff0c;接单&#xff0c;陪练师入住&#xff0c;赚取外快 线下场馆入住 设置自己服务 城市代理 分销商入住 优惠券 技术栈&#xff1a;前端uniapp后端thinkphp 独立全开源...

Spring-集成Junit

一、引子 我们在Spring概念中提到&#xff1a;Spring的一大优势在于可以集成众多优秀的框架。毫无疑问&#xff0c;我首先向读者推荐的就是Junti框架。因为我们在前期的学习中&#xff0c;写一些小的demo&#xff0c;用Junit来进行小测试是非常合适的。下面让我们来具体看看如…...

DS:经典算法OJ题(1)

创作不易&#xff0c;友友们给个三连呗&#xff01;&#xff01; 本文为经典算法OJ题练习&#xff0c;大部分题型都有多种思路&#xff0c;每种思路的解法博主都试过了&#xff08;去网站那里验证&#xff09;是正确的&#xff0c;大家可以参考&#xff01;&#xff01; 一、移…...

最好理解文章——什么是闭包?

学习Javascript闭包&#xff08;Closure&#xff09; 闭包&#xff08;closure&#xff09;是Javascript语言的一个难点&#xff0c;也是它的特色&#xff0c;很多高级应用都要依靠闭包实现。 一、变量的作用域 要理解闭包&#xff0c;首先必须理解Javascript特殊的变量作用…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...