解决电脑运行打不开问题:代码优化与权限检查
根据提供的代码,要解决电脑运行打不开的问题,需从权限、文件路径、兼容性等方面排查并修改。以下是修改后的代码及解读: ```vb .版本 2 .支持库 eAPI .支持库 shell .子程序 _进程组合框_将弹出列表 .局部变量 jc, 进程信息, , "0" .局部变量 进程个数, 整数型 .局部变量 js, 整数型 进程组合框.清空 () jc = 取系统进程列表 () 进程个数 = 取数组成员数 (jc) .计次循环首 (进程个数, js) 进程组合框.加入项目 (jc [js].进程名称, ) .计次循环尾 () .子程序 提取DUMP1 .局部变量 DUMP数据, 字节集 .局部变量 原版PE头, 字节集 .局部变量 最终数据, 字节集 .局部变量 DUMP名称, 文本型 .局部变量 进程ID, 整数型 .局部变量 进程句柄, 整数型 .局部变量 原版路径, 文本型 .局部变量 PE头大小, 整数型 进程ID = 取进程ID (进程组合框.取项目文本 (进程组合框.现行选中项)) 进程句柄 = 进程_打开 (进程ID) .如果真 (进程ID = 0) 输出 (“请先选择游戏进程”) 返回 () .如果真结束 ' 检查进程句柄是否有效 .如果真 (进程句柄 = 0) 输出 (“无法打开进程,请检查权限或进程是否存在”) 返回 () .如果真结束 .如果真 (读内存整数型 (进程ID, 5368709120) ≠ 9460301) 输出 (“无读写权限,请以管理员身份运行程序或调整权限”) 进程_关闭 (进程句柄) 返回 () .如果真结束 ' ========== 关键:读取原版DNF.exe的PE头(包含资源/版本信息) ========== ' 请改成你电脑上DNF.exe的真实路径! 原版路径 = “D:\地下城与勇士\start\DNF.exe” 原版PE头 = 读入文件 (原版路径) .如果真 (原版PE头 = {}) 输出 (“错误:无法读取原版DNF.exe,请检查路径是否正确或文件是否存在”) 进程_关闭 (进程句柄) 返回 () .如果真结束 ' 读取前4096字节,包含PE头和资源表,足够让属性页正常显示 PE头大小 = 4096 原版PE头 = 取字节集左边 (原版PE头, PE头大小) ' ================================================================== 输出 (“正在读取内存,请稍候…”) 程序_延时 (100) ' 一次性读取整个内存,添加错误检查 DUMP数据 = 读内存字节集 (进程ID, 5368709120, 248512512) .如果真 (取字节集长度 (DUMP数据) = 0) 输出 (“读取内存失败,请检查权限或进程状态”) 进程_关闭 (进程句柄) 返回 () .如果真结束 输出 (“DUMP数据获取完毕,正在生成带属性页的文件”) ' 拼接原版PE头 + 内存数据(跳过内存数据的前4096字节,避免重复) 最终数据 = 原版PE头 + 取字节集右边 (DUMP数据, 取字节集长度 (DUMP数据) - PE头大小) ' 生成文件名 DUMP名称 = 到文本 (取年份 (取现行时间 ())) + “-” + 到文本 (取月份 (取现行时间 ())) + “-” + 到文本 (取日 (取现行时间 ())) + “_DUMP.exe” ' 检查是否能成功写入文件 .如果真 (写到文件 (取特定目录 (#系统桌面) + DUMP名称, 最终数据) = 假) 输出 (“文件写入失败,请检查桌面权限或磁盘空间”) 进程_关闭 (进程句柄) 返回 () .如果真结束 输出 (“✅ 文件生成完毕!桌面:” + DUMP名称) 输出 (“✅ 此文件属性页将正常显示DNF的版本信息和图标”) 进程_关闭 (进程句柄) .子程序 输出 .参数 内容, 文本型 编辑框1.加入文本 (内容 + #换行符) .子程序 程序_延时, 逻辑型, 公开, 不占用cpu,窗口不卡死,不影响其它代码执行 .参数 延时间隔, 长整数型, 可空, 1000毫秒 = 1秒 留空为无限等待 .参数 延时单位, 整数型, 可空, 默认为毫秒 0=毫秒 1=秒 2=分钟 3=小时 .局部变量 匿名局部变量_1, 整数型 .局部变量 匿名局部变量_2, 匿名结构_98 .判断开始 (延时单位 = 0 且 是否为空 (延时间隔)) 延时间隔 = 5000 × 60 × 60 延时单位 = 5000 × 60 × 60 .判断 (延时单位 = 0) 延时单位 = 1 .判断 (延时单位 = 1) 延时单位 = 1000 .判断 (延时单位 = 2) 延时单位 = 1000 × 60 .判断 (延时单位 = 3) 延时单位 = 1000 × 60 × 60 .默认 .判断结束 匿名局部变量_2.匿名成员_1 = -10 × 延时间隔 × 1000 × 延时单位 匿名局部变量_1 = CreateWaitableTimerA (0, 假, 0) SetWaitableTimer (匿名局部变量_1, 匿名局部变量_2, 0, 0, 0, 假) .判断循环首 (MsgWaitForMultipleObjects (1, 匿名局部变量_1, 假, -1, 255) ≠ 0) 处理事件 () .判断循环尾 () CloseHandle (匿名局部变量_1) 返回 (真) ``` ### 修改点说明 1. **进程句柄检查**:在打开进程后,添加对进程句柄是否有效的检查,若无效则输出错误信息。 2. **权限提示优化**:当无读写权限时,提示以管理员身份运行程序或调整权限。 3. **内存读取检查**:读取内存数据后,检查字节集长度是否为 0,若为 0 则输出读取失败信息。 4. **文件写入检查**:写入文件时,检查是否成功,若失败则输出相应错误信息。 ######[AI问答 | 1651点数解答 | 2026-05-16 21:56:20]
- 易语言编程:权限相关概念、获取方法、数据操作及管理注意事项揭秘(字节豆包 | 800点数解答 | 2026-02-10 01:27:41)70
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)167
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)188
- Python实现多个整数相乘的计算及开发建议(字节豆包 | 427点数解答 | 2026-02-25 19:25:10)53
- 编程求解 1 到 N 的阶乘和:Python 与 C++ 实现(字节豆包 | 650点数解答 | 2026-03-01 20:05:48)32
- C++实现自定义函数计算 f(a)+f(b)+f(c)(字节豆包 | 610点数解答 | 2026-04-11 20:22:28)26
- C++实现找出指定范围内完全数的方法及开发建议(字节豆包 | 692点数解答 | 2026-04-11 20:23:34)24
- C++ 计算 1 到 n 中数字 1 的出现次数的实现与解析(字节豆包 | 849点数解答 | 2026-04-11 20:24:18)29
- 解析React 15与Vue 2:从O(n^3)到O(n),Diff算法时间复杂度计算及性能对比 (阿里通义 | 379点数解答 | 2023-11-09 01:49:19)358
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)278
- 精准优化:明确需求,开启高效提升之旅! (字节豆包 | 52点数解答 | 2026-02-09 16:44:46)68
- 代码再升级:优化版“获取dump”代码,多机制保障数据读取与保存(字节豆包 | 734点数解答 | 2026-02-10 01:23:31)89