.版本 2
.支持库 spec
.程序集 窗口程序集1
.子程序 _启动子程序, 整数型
.局部变量 列表, 文本型, , "0"
' 置微软兼容列表 (假)
' 置IE安全选项 (2, #IE选项_初始化未标记安全的ActiveX, #允许)
' 调试输出 (置IE区域安全站点 (4, “123123123.com”, 4)) ' 48-57
取IE兼容列表 (列表)
调试输出 (列表)
' 置IE兼容列表 (列表)
' 调试输出 (列表)
返回 (0)
.子程序 置IE区域安全站点, 逻辑型, 公开
.参数 安全类型, 整数型, , 2:受信站点 4:受限站点
.参数 域名或IP, 文本型, , 仅支持根域名和IP 如:taobao.com、222.74.1.200
.参数 协议类型, 整数型, , 1:http 2:https 3:http/https 4:*
.局部变量 type, 文本型
.局部变量 Ret, 逻辑型
.局部变量 path, 文本型
.局部变量 i, 整数型
.局部变量 isIP, 逻辑型
.局部变量 子项, 文本型, , "0"
.局部变量 子项目, 文本型
' HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains 域名 https/http 域名
' HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range88 IP :Range IP地址
.如果真 ((安全类型 ≠ 2 或 安全类型 ≠ 4) 且 (协议类型 < 1 或 协议类型 > 4))
返回 (假)
.如果真结束
域名或IP = 删全部空 (域名或IP)
.判断开始 (协议类型 = 1)
type = #http
.判断 (协议类型 = 2)
type = #https
.判断 (协议类型 = 4)
type = “*”
.默认
.判断结束
isIP = 是否是IP (域名或IP)
.判断开始 (isIP)
子项目 = “”
枚举注册项 (#HKEY_CURRENT_USER_当前用户, #区域安全 + “Ranges”, 子项)
.计次循环首 (取数组成员数 (子项), i)
.如果真 (取文本注册项 (#现行用户, #区域安全 + “Ranges\” + 子项 [i] + “\:Range”, ) = 域名或IP)
子项目 = 子项 [i]
跳出循环 ()
.如果真结束
.计次循环尾 ()
i = 1
.如果真 (子项目 = “”)
.判断循环首 (注册项是否存在 (#现行用户, #区域安全 + “Ranges\Range” + 到文本 (i) + “\:Range”))
i = i + 1
.判断循环尾 ()
子项目 = “Range” + 到文本 (i)
.如果真结束
path = #区域安全 + “Ranges\” + 子项目 + “\”
.默认
path = #区域安全 + “Domains\” + 域名或IP + “\”
.判断结束
删除注册项 (#现行用户, path + #http)
删除注册项 (#现行用户, path + #https)
.如果真 (isIP)
Ret = 写注册项 (#现行用户, path + “:Range”, 域名或IP)
.如果真结束
.如果真 (协议类型 = 3)
Ret = 删除注册项 (#现行用户, path + “*”)
Ret = 写注册项 (#现行用户, path + #http, 安全类型)
Ret = 写注册项 (#现行用户, path + #https, 安全类型)
返回 (Ret)
.如果真结束
Ret = 写注册项 (#现行用户, path + type, 安全类型)
返回 (Ret)
.子程序 枚举注册项, 整数型, 公开, 返回子项数
.参数 父项目, 整数型, , 指定注册表的主键
.参数 路径, 文本型, , 指定主键下需要枚举的全路径
.参数 子项目数组, 文本型, 参考 数组, 存储子项目的数组
.参数 不清空子项目数组, 逻辑型, 可空, 是否保留子项目储存数组中原有的数据
.局部变量 句柄, 整数型
.局部变量 xh
.局部变量 项名缓冲区, 文本型
.局部变量 项名缓冲区长度, 整数型
.如果真 (_RegOpenKeyA (父项目, 路径, 句柄) ≠ 0 或 句柄 = 0)
返回 (0)
.如果真结束
项名缓冲区 = 取空白文本 (256)
项名缓冲区长度 = 256
.如果真 (不清空子项目数组 = 假)
清除数组 (子项目数组)
.如果真结束
.判断循环首 (RegEnumKeyExA (句柄, xh, 项名缓冲区, 项名缓冲区长度, 0, 0, 0, 0) = 0)
加入成员 (子项目数组, 项名缓冲区)
项名缓冲区长度 = 256
xh = xh + 1
.判断循环尾 ()
_RegCloseKey (句柄)
返回 (取数组成员数 (子项目数组))
.子程序 枚举注册值, 整数型, 公开, 返回值个数
.参数 父项目, 整数型, , 指定注册表的主键
.参数 路径, 文本型, , 指定主键下需要枚举的全路径
.参数 储存值名的数组, 注册表值, 参考 数组, 注册表值结构体数组,储存一个值的相关信息
.参数 不清空子项目数组, 逻辑型, 可空, 是否保留子项目储存数组中原有的数据
.局部变量 临时, 注册表值
.局部变量 空, 注册表值
.局部变量 句柄, 整数型
.局部变量 xh
.局部变量 值名缓冲区, 文本型
.局部变量 值名缓冲区长度, 整数型
.局部变量 值类型, 整数型
.局部变量 值数据缓冲区, 字节集
.局部变量 值数据缓冲区长度, 整数型
.局部变量 默认长度, 整数型
.如果真 (_RegOpenKeyA (父项目, 路径, 句柄) ≠ 0 或 句柄 = 0)
返回 (0)
.如果真结束
默认长度 = 1024 ' 默认缓冲区长度,部分文本可能比较长,原则上应该根据RegEnumValueA的返回值动态分配内存,但是比较麻烦
值名缓冲区 = 取空白文本 (默认长度) ' 初始化保存值名的缓冲区,一般值名都不会太长
值名缓冲区长度 = 默认长度
值数据缓冲区 = 取空白字节集 (默认长度) ' 初始化保存数据的缓冲区
值数据缓冲区长度 = 默认长度
置等待鼠标 ()
.如果真 (不清空子项目数组 = 假) ' 是否清空数组中原有的值
清除数组 (储存值名的数组)
.如果真结束
.判断循环首 (RegEnumValueA (句柄, xh, 值名缓冲区, 值名缓冲区长度, 0, 值类型, 值数据缓冲区, 值数据缓冲区长度) = 0) ' 开始枚举
临时.值名 = 值名缓冲区
临时.值类型 = 值类型
临时.值数据 = 取字节集左边 (值数据缓冲区, 值数据缓冲区长度)
临时.值数据长度 = 值数据缓冲区长度 ' 返回后这里的数值缓冲区长度已经被API设置成了“值数据”的实际长度
加入成员 (储存值名的数组, 临时)
临时 = 空 ' 将变量的值清空,比较不规矩的做法
值名缓冲区长度 = 默认长度
值数据缓冲区长度 = 默认长度
xh = xh + 1
.判断循环尾 ()
_RegCloseKey (句柄)
返回 (取数组成员数 (储存值名的数组))
.子程序 置IE安全选项, 逻辑型, 公开
.参数 安全类型, 整数型, , 2:受信任的站点 3:Internet 区域 4:受限站点
.参数 项目, 整数型, , #IE选项_
.参数 值, 整数型, , #允许 #提示 #禁止
' HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2 3 4
.如果真 (安全类型 < 2 或 安全类型 > 4 且 (值 < 0 或 值 > 3))
返回 (假)
.如果真结束
返回 (写注册项 (#现行用户, “Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\” + 到文本 (安全类型) + “\” + 到文本 (项目), 值))
.子程序 置IE兼容列表, 逻辑型, 公开
.参数 列表, 文本型, 数组
.局部变量 项目数, 整数型
.局部变量 List, 字节集
.局部变量 i, 整数型
.局部变量 lng, 整数型
.局部变量 兼容列表, 兼容列表
项目数 = 取数组成员数 (列表)
.计次循环首 (项目数, i)
lng = lng + LocalSize (列表 [i]) - 1
.计次循环尾 ()
兼容列表.头 = { 65, 31, 0, 0, 83, 8, 173, 186 }
兼容列表.条目数1 = 到字节集 (项目数)
兼容列表.未知1 = 到字节集 (到整数 (1))
兼容列表.条目数2 = 兼容列表.条目数1
重定义数组 (兼容列表.地址条目, 假, 项目数)
.计次循环首 (项目数, i)
兼容列表.地址条目 [i].分隔符 = { 12, 0, 0, 0 }
兼容列表.地址条目 [i].未知3 = 随机字节集 ()
兼容列表.地址条目 [i].未知4 = 随机字节集 ()
兼容列表.地址条目 [i].固定值 = { 1, 0, 0, 0 } ' 调试输出 (子程序1 (列表 [i]))
兼容列表.地址条目 [i].地址 = 字符扩展 (列表 [i])
兼容列表.地址条目 [i].地址长度 = 到字节集 (到短整数 (取文本长度 (列表 [i])))
List = List + 兼容列表.地址条目 [i].分隔符 + 兼容列表.地址条目 [i].未知3 + 兼容列表.地址条目 [i].未知4 + 兼容列表.地址条目 [i].固定值 + 兼容列表.地址条目 [i].地址长度 + 兼容列表.地址条目 [i].地址
.计次循环尾 ()
兼容列表.长度 = 到字节集 (到整数 (取字节集长度 (List) + 12)) ' 调试输出 (LocalSize1 (兼容列表.地址条目))
List = 兼容列表.头 + 兼容列表.条目数1 + 兼容列表.长度 + 兼容列表.未知1 + 兼容列表.条目数2 + List
调试输出 (List)
返回 (写注册项 (#现行用户, #Path, List))
.子程序 使用微软兼容列表, 逻辑型, 公开, 是否使用 Microsof 兼容性列表
.参数 是否使用, 逻辑型
返回 (写注册项 (#现行用户, “Software\Microsoft\Internet Explorer\BrowserEmulation\MSCompatibilityMode”, 到整数 (是否使用)))
.子程序 取IE兼容列表, 整数型, 公开, 成功返回项目数,失败返回0
.参数 列表, 文本型, 参考 数组
.局部变量 Data, 字节集
.局部变量 Files, 整数型
.局部变量 头, 字节集
.局部变量 条目数, 整数型
.局部变量 长度, 整数型
头 = { 65, 31, 0, 0, 83, 8, 173, 186 }
Files = 打开内存文件 ()
Data = 取字节集注册项 (#现行用户, #Path, )
写出字节集 (Files, Data)
移到文件首 (Files)
.如果真 (读入字节集 (Files, 8) ≠ 头)
返回 (0)
.如果真结束
条目数 = 取字节集数据 (读入字节集 (Files, 4), #整数型, )
长度 = 取字节集数据 (读入字节集 (Files, 4), #整数型, )
.如果真 (条目数 = 0 或 长度 = 0)
返回 (0)
.如果真结束
读入字节集 (Files, 8) ' 前4个未知 后4个条目数
.计次循环首 (条目数, )
移动读写位置 (Files, #现行位置, 16)
长度 = 取字节集数据 (读入字节集 (Files, 2), #整数型, ) × 2
加入成员 (列表, 到文本 (子字节集替换 (读入字节集 (Files, 长度), { 0 }, , , )))
.计次循环尾 ()
关闭文件 (Files)
返回 (条目数)
.子程序 字符扩展, 字节集
.参数 A2Z, 文本型
.局部变量 i, 整数型
.局部变量 s, 字节集
.变量循环首 (1, 取文本长度 (A2Z), 1, i)
s = s + 到字节集 (到字节 (取代码 (取文本中间 (A2Z, i, 1), ))) + { 0 }
.变量循环尾 ()
返回 (s)
.子程序 随机字节集, 字节集
.参数 长度, , 可空, 默认4个
.局部变量 字节集, 字节集
.如果真 (长度 ≤ 0)
长度 = 4
.如果真结束
.计次循环首 (长度, )
字节集 = 字节集 + 到字节集 (到字节 (取随机数 (0, 255)))
.计次循环尾 ()
返回 (字节集)
.子程序 是否是IP, 逻辑型
.参数 IP, 文本型
.局部变量 temp, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 tmp, 整数型
temp = 分割文本 (IP, “.”, )
.计次循环首 (4, i)
tmp = 到整数 (temp [i])
.如果真 (tmp < 0 或 tmp > 255)
返回 (假)
.如果真结束
.计次循环尾 ()
返回 (真)
@发Q