ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

易语言-练习小程序-取PE下的IP地址

易语言-练习小程序-取PE下的IP地址 在PE下读取原系统的IP地址:.版本 2 .程序集 窗口程序集_启动窗口 .子程序 _按钮_查询_被单击 .局部变量 盘, 文本型 .局部变量 临时文件, 文本型 .局部变量 加载成功, 逻辑型 .局部变量 尝试次数, 整数型 .局部变量 控制集编号, 文本型 .局部变量 查询结果, 文本型 .局部变量 查找到, 整数型 .局部变量 原始输出, 文本型 .局部变量 最终结果, 文本型 .局部变量 行数组, 文本型, , 0 .局部变量 单一行, 文本型 .局部变量 i, 整数型 .局部变量 接口标识, 文本型 .局部变量 当前_IP, 文本型 .局部变量 当前_DHCPIP, 文本型 .局部变量 当前_掩码, 文本型 .局部变量 当前_网关, 文本型 .局部变量 当前_DNS, 文本型 .局部变量 已输出接口, 文本型, , 0 .局部变量 是否已输出, 逻辑型 .局部变量 j, 整数型 .局部变量 取值位置, 整数型 .局部变量 开始位置, 整数型 .局部变量 真实值, 文本型 第一步输入验证与路径规范化 盘 编辑框_分区.内容 .如果真 (盘 “”) 信息框 (“请输入盘符如 C:”, 0, “提示”, ) 返回 () .如果真结束 盘 到大写 (取文本左边 (盘, 1)) “:” .如果真 (文件是否存在 (盘 “\Windows\System32\config\SYSTEM”) 假) 信息框 (“找不到系统文件” 盘 #换行符 #换行符 “请确认该分区存在已安装的 Windows 系统。”, 0, “错误”, ) 返回 () .如果真结束 临时文件 取运行目录 () “\ip.tmp” 第二步环境清理 删除文件 (临时文件) 运行 (“reg unload HKLM\OFFLINE_SYSTEM”, 假, ) 延时 (300) 第三步加载离线注册表 加载成功 假 .计次循环首 (3, 尝试次数) 删除文件 (临时文件) 运行 (“reg load HKLM\OFFLINE_SYSTEM ” 盘 “\Windows\System32\config\SYSTEM”, 假, ) 延时 (600) 运行 (“cmd /c reg query HKLM\OFFLINE_SYSTEM\Select ” 临时文件 “ 21”, 真, ) 延时 (300) .如果真 (文件是否存在 (临时文件)) 查询结果 到文本 (读入文件 (临时文件)) .如果真 (寻找文本 (查询结果, “错误”, , 假) -1 且 寻找文本 (查询结果, “ERROR”, , 假) -1) 加载成功 真 跳出循环 () .如果真结束 .如果真结束 运行 (“reg unload HKLM\OFFLINE_SYSTEM”, 假, ) 延时 (400) .计次循环尾 () .如果真 (加载成功 假) 删除文件 (临时文件) 信息框 (“注册表加载失败” #换行符 #换行符 “请右键→以管理员身份运行本程序。”, 0, “错误”, ) 返回 () .如果真结束 第四步动态确定 ControlSet 控制集编号 “ControlSet001” 删除文件 (临时文件) 运行 (“cmd /c reg query HKLM\OFFLINE_SYSTEM\Select /v Current ” 临时文件 “ 21”, 真, ) 延时 (300) .如果真 (文件是否存在 (临时文件)) 查询结果 到文本 (读入文件 (临时文件)) 查找到 寻找文本 (查询结果, “0x”, , 假) .如果真 (查找到 0) .如果真 (取文本中间 (查询结果, 查找到 2, 1) “2”) 控制集编号 “ControlSet002” .如果真结束 .如果真结束 .如果真结束 第五步查询 清理格式 去重 编辑框_结果.内容 “系统分区” 盘 #换行符 编辑框_结果.加入文本 (“活跃控制集” 控制集编号 #换行符 #换行符) 编辑框_结果.加入文本 (“---- IP 配置信息 ----” #换行符) 最终结果 “” .计次循环首 (2, 尝试次数) 删除文件 (临时文件) 运行 (“cmd /c reg query ” #引号 “HKLM\OFFLINE_SYSTEM\” 控制集编号 “\Services\Tcpip\Parameters\Interfaces” #引号 “ /s ” 临时文件 “ 21”, 真, ) 延时 (500) .如果真 (文件是否存在 (临时文件)) 原始输出 到文本 (读入文件 (临时文件)) .如果真 (取文本长度 (原始输出) 20 且 寻找文本 (原始输出, “错误”, , 假) -1 且 寻找文本 (原始输出, “ERROR”, , 假) -1) 最终结果 “” 接口标识 “” 当前_IP “” 当前_DHCPIP “” 当前_掩码 “” 当前_网关 “” 当前_DNS “” 清除数组 (已输出接口) 行数组 分割文本 (原始输出, #换行符, ) .计次循环首 (取数组成员数 (行数组), i) 单一行 删首尾空 (行数组 [i]) .如果真 (单一行 “”) 到循环尾 () .如果真结束 遇到新接口路径 → 先输出上一个重置变量 .如果真 (取文本左边 (单一行, 6) “HKLM_\” 或 寻找文本 (单一行, “Interfaces\”, , 假) ≠ -1) .如果真 (接口标识 ≠ “”) 是否已输出 假 .计次循环首 (取数组成员数 (已输出接口), j) .如果真 (已输出接口 [j] 接口标识) 是否已输出 真 跳出循环 () .如果真结束 .计次循环尾 () .如果真 (是否已输出 假) 加入成员 (已输出接口, 接口标识) 最终结果 最终结果 “接口” 接口标识 #换行符 .如果真 (当前_IP ≠ “”) 最终结果 最终结果 “ IP地址 ” 当前_IP #换行符 .如果真结束 .如果真 (当前_DHCPIP ≠ “”) 最终结果 最终结果 “ DHCP分配地址 ” 当前_DHCPIP #换行符 .如果真结束 .如果真 (当前_掩码 ≠ “”) 最终结果 最终结果 “ 子网掩码 ” 当前_掩码 #换行符 .如果真结束 .如果真 (当前_网关 ≠ “”) 最终结果 最终结果 “ 默认网关 ” 当前_网关 #换行符 .如果真结束 .如果真 (当前_DNS ≠ “”) 最终结果 最终结果 “ DNS服务器 ” 当前_DNS #换行符 .如果真结束 最终结果 最终结果 #换行符 .如果真结束 .如果真结束 接口标识 单一行 当前_IP “” 当前_DHCPIP “” 当前_掩码 “” 当前_网关 “” 当前_DNS “” 到循环尾 () .如果真结束 提取值跳过 REG_SZ / REG_MULTI_SZ 等类型标识 取值位置 寻找文本 (单一行, “REG_”, , 假) .如果真 (取值位置 ≠ -1) 找到类型段结束位置 → 跳过 REG_XXX 直接取真实值 开始位置 寻找文本 (单一行, “ ”, 取值位置, 假) .如果真 (开始位置 -1) 到循环尾 () .如果真结束 开始位置 开始位置 1 跳过连续空格 .判断循环首 (开始位置 ≤ 取文本长度 (单一行)) .如果真 (取文本中间 (单一行, 开始位置, 1) ≠ “ ”) 跳出循环 () .如果真结束 开始位置 开始位置 1 .判断循环尾 () 真实值 删首尾空 (取文本右边 (单一行, 取文本长度 (单一行) 开始位置 1)) 赋值只保留第一个有效值 .如果真 (寻找文本 (单一行, “IPAddress”, , 假) ≠ -1 且 当前_IP “”) 当前_IP 真实值 .如果真结束 .如果真 (寻找文本 (单一行, “DhcpIPAddress”, , 假) ≠ -1 且 当前_DHCPIP “”) 当前_DHCPIP 真实值 .如果真结束 .如果真 (寻找文本 (单一行, “SubnetMask”, , 假) ≠ -1 且 当前_掩码 “”) 当前_掩码 真实值 .如果真结束 .如果真 (寻找文本 (单一行, “DefaultGateway”, , 假) ≠ -1 且 当前_网关 “”) 当前_网关 真实值 .如果真结束 .如果真 (寻找文本 (单一行, “NameServer”, , 假) ≠ -1 且 当前_DNS “”) 当前_DNS 真实值 .如果真结束 .如果真结束 .计次循环尾 () 输出最后一个接口 .如果真 (接口标识 ≠ “”) 是否已输出 假 .计次循环首 (取数组成员数 (已输出接口), j) .如果真 (已输出接口 [j] 接口标识) 是否已输出 真 跳出循环 () .如果真结束 .计次循环尾 () .如果真 (是否已输出 假) 加入成员 (已输出接口, 接口标识) 最终结果 最终结果 “接口” 接口标识 #换行符 .如果真 (当前_IP ≠ “”) 最终结果 最终结果 “ IP V4 地址 ” 当前_IP #换行符 .如果真结束 .如果真 (当前_DHCPIP ≠ “”) 最终结果 最终结果 “ DHCP分配地址 ” 当前_DHCPIP #换行符 .如果真结束 .如果真 (当前_掩码 ≠ “”) 最终结果 最终结果 “ 子网掩码 ” 当前_掩码 #换行符 .如果真结束 .如果真 (当前_网关 ≠ “”) 最终结果 最终结果 “ 默认网关 ” 当前_网关 #换行符 .如果真结束 .如果真 (当前_DNS ≠ “”) 最终结果 最终结果 “ DNS服务器 ” 当前_DNS #换行符 .如果真结束 .如果真结束 .如果真结束 .如果真 (取文本长度 (最终结果) 10) 跳出循环 () .如果真结束 .如果真结束 .如果真结束 .计次循环尾 () 第六步清理与显示 运行 (“reg unload HKLM\OFFLINE_SYSTEM”, 假, ) 延时 (200) 删除文件 (临时文件) .如果真 (取文本长度 (最终结果) 10) 编辑框_结果.加入文本 (最终结果) 编辑框_结果.加入文本 (“查询完成。”) .如果真结束 .如果真 (取文本长度 (最终结果) ≤ 10) 编辑框_结果.加入文本 (“未查到有效 IP 配置。” #换行符 #换行符) 编辑框_结果.加入文本 (“可能原因” #换行符) 编辑框_结果.加入文本 (“ 1. 目标系统未配置静态 IP” #换行符) 编辑框_结果.加入文本 (“ 2. DHCP 历史记录为空” #换行符) 编辑框_结果.加入文本 (“ 3. 注册表路径异常” #换行符) 编辑框_结果.加入文本 (“ 4. 权限不足请以管理员身份运行”) .如果真结束
返回列表