下你所需,载你所想!
汇集开发技术源码资料

注册表及系统服务操作类模块源码

:29.978KB :1 :2019-12-15 08:01:20

部分简介

.子程序 注册表_刷新项, 逻辑型, 公开, 将对项和它的子项作出的改动实际写入磁盘,成功返回真,失败返回假。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型, , 如“Software\Demo\megs”前面不要带斜扛。

返回 (RegFlushKey (GetOpenRegHandle (根目录, 项名称)) = 0)

.子程序 注册表_枚举项, 整数型, 公开, 枚举指定项名称下的子项(成功返回子项目数,失败返回-1)
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 项目数组, 文本型, 数组, 变量储存返回注册项数组。
.局部变量 handle
.局部变量 sbuffer, 文本型
.局部变量 i, 整数型

handle = GetOpenRegHandle (根目录, 项名称)
.如果真 (handle = 0)
返回 (0)
.如果真结束
sbuffer = 取空白文本 (256)
.判断循环首 (枚举指定项的子项_ (handle, i, sbuffer, 256) = 0)
加入成员 (项目数组, sbuffer)
i = i + 1
处理事件 ()
.判断循环尾 ()
RegCloseKey (handle)
返回 (取数组成员数 (项目数组))

.子程序 注册表_枚举项Ex, 整数型, 公开, 枚举指定项名称下的子项(成功返回子项目数,失败返回-1)
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 项目数组, 文本型, 数组, 变量储存返回注册项数组。
.参数 修改日期, 日期时间型, 数组, 变量储存返回注册项数组。
.局部变量 hKey
.局部变量 sbuffer, 文本型
.局部变量 i, 整数型
.局部变量 Number
.局部变量 hftime, 文件时间_
.局部变量 dwError
.局部变量 nameSize
.局部变量 lpcName

hKey = GetOpenRegHandle (根目录, 项名称)
.如果真 (hKey = 0)
返回 (0)
.如果真结束
Number = 注册表_取子项数 (根目录, 项名称)
.如果真 (Number = 0)
返回 (0)
.如果真结束
sbuffer = 取空白文本 (256)
重定义数组 (项目数组, 假, Number)
重定义数组 (修改日期, 假, Number)
.计次循环首 (Number, i)
dwError = RegEnumKeyEx (hKey, i, sbuffer, 256, 0, 0, 0, hftime)
项目数组 [i] = sbuffer
修改日期 [i] = 时间_系统转日期 (时间_文件转系统 (hftime))
.计次循环尾 ()
RegCloseKey (hKey)
返回 (Number)

.子程序 注册表_枚举子键, 整数型, 公开
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 子键名称, 文本型, 参考 数组, 变量储存返回值。
.参数 子键值, 字节集, 参考 数组, 变量储存返回值。
.参数 子键类型, , 参考 数组, 变量储存返回值。
.局部变量 handle
.局部变量 sbuffer, 文本型
.局部变量 temp, 字节集
.局部变量 i, 整数型
.局部变量 bufptr
.局部变量 dwSize

清除数组 (子键名称)
清除数组 (子键值)
清除数组 (子键类型)
handle = GetOpenRegHandle (根目录, 项名称)
.如果真 (handle = 0)
返回 (0)
.如果真结束
sbuffer = 取空白文本 (256)

.判断循环首 (handle ≠ 0)
枚举注册项值_ (handle, i, sbuffer, 256, 0, bufptr, temp, dwSize)
temp = 取空白字节集 (dwSize)
.如果 (枚举注册项值_ (handle, i, sbuffer, 256, 0, bufptr, temp, dwSize) = 0)
重定义数组 (子键名称, 真, i + 1)
重定义数组 (子键值, 真, i + 1)
重定义数组 (子键类型, 真, i + 1)
子键名称 [i + 1] = sbuffer
子键值 [i + 1] = temp
子键类型 [i + 1] = bufptr

.否则
跳出循环 ()
.如果结束
i = i + 1
处理事件 ()
.判断循环尾 ()
RegCloseKey (handle)
返回 (取数组成员数 (子键名称))


.子程序 注册表_备份项, 逻辑型, 公开, 将一个项以及它的所有子项都保存到一个磁盘文件,成功返回真,失败返回假。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 备份路径, 文本型, , 备份的文件经压缩,打开后会出现乱码。
.局部变量 Handle
.局部变量 error

进程提权 (“SeBackupPrivilege”)
Handle = GetOpenRegHandle (根目录, 项名称)
error = RegSaveKey (Handle, 备份路径, 0)
RegCloseKey (Handle)
返回 (error = 0)

.子程序 注册表_还原项, 逻辑型, 公开, 将已备份的注册表项还原到注册表,成功返回真,失败返回假。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 备份路径, 文本型
.局部变量 Handle
.局部变量 error

进程提权 (“SeRestorePrivilege”)
Handle = GetOpenRegHandle (根目录, 项名称)
.如果真 (Handle = 0)
返回 (假)
.如果真结束
error = RegRestoreKey (Handle, 备份路径, 8) ' REG_FORCE_RESTORE
RegCloseKey (Handle)
返回 (error = 0)

.子程序 注册表_备份项Ex, 逻辑型, 公开, 将一个项以及它的所有子项都保存到一个磁盘文件,成功返回真,失败返回假。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 参数, , , 参数:1=标准格式;2=新格式;4=压缩;
.参数 备份路径, 文本型, , 备份的文件经压缩,打开后会出现乱码。
.局部变量 hKey
.局部变量 dwError

进程提权 (“SeBackupPrivilege”)
hKey = GetOpenRegHandle (根目录, 项名称)
dwError = RegSaveKeyEx (hKey, 备份路径, 0, 参数)
RegCloseKey (hKey)
返回 (dwError = 0)

.子程序 注册表_导出, 逻辑型, 公开, 导出未压缩的标准注册表格式到硬盘,成功返回真,失败返回假。
.参数 全路径注册项名, 文本型
.参数 保存路径, 文本型

返回 (运行 (“regedit /e ” + 保存路径 + “ ” + 全路径注册项名, 假, ))

.子程序 注册表_导入, 逻辑型, 公开, 导入标准的注册表文件到注册表,成功返回真,失败返回假。
.参数 欲导入文件, 文本型, , REG所在文件路径。

返回 (运行 (“regedit /s ” + 欲导入文件, 假, ))

.子程序 注册表_替换, 逻辑型, 公开, 用备份的注册表文件替换注册表中的指定项,成功返回真,失败返回假。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 欲替换文件, 文本型
.参数 备份路径, 文本型
.局部变量 handle
.局部变量 error

进程提权 (“SeRestorePrivilege”)
error = RegReplaceKey (GetNumberType (根目录), 项名称, 欲替换文件, 备份路径)
.如果真 (error ≠ 0)
返回 (假)
.如果真结束
RegCloseKey (handle)
返回 (真)

.子程序 注册表_复制, 逻辑型, 公开, 不支持 Vista以下系统,吧项目1中的数据复制到项目2中,如果项目2中有数据则会覆盖,谨慎操作。成功则返回真,失败则返回假。
.参数 项目1根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项目1项名称, 文本型
.参数 项目2根目录, , , 欲复制到的项根目录。
.参数 项目2项名称, 文本型, , 欲复制到的项名称。
.局部变量 dwError
.局部变量 hKey1
.局部变量 hKey2

hKey1 = GetOpenRegHandle (项目1根目录, 项目1项名称)
hKey2 = GetOpenRegHandle (项目2根目录, 项目2项名称)
dwError = RegCopyTree (hKey1, 0, hKey2)
RegCloseKey (hKey1)
RegCloseKey (hKey2)
返回 (dwError = 0)

.子程序 注册表_删除所有子建, 逻辑型, 公开, 不支持 Vista以下系统,递归删除子项所有子建,成功则返回真,失败则返回假。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.局部变量 hKey
.局部变量 dwError

hKey = GetOpenRegHandle (根目录, 项名称)
dwError = RegDeleteTree (hKey, 0)
RegCloseKey (hKey)
返回 (dwError = 0)

.子程序 注册表_取注册表容量, , 公开, 检索当前注册表的大小和最大大小,注册表被允许达到的系统。
.参数 当前注册表大小, , 参考
.参数 最大支持大小, , 参考
.局部变量 dwError
.局部变量 QuotaAllowed
.局部变量 QuotaUsed

dwError = GetSystemRegistryQuota (QuotaAllowed, QuotaUsed)
当前注册表大小 = QuotaUsed
最大支持大小 = QuotaAllowed

.子程序 注册表_取子项数, 整数型, 公开, 获取指定注册表子项,失败则返回零。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.局部变量 hKey, 整数型
.局部变量 Number
.局部变量 ftime, 文件时间_

hKey = GetOpenRegHandle (根目录, 项名称)
RegQueryInfoKey (hKey, 字符 (0), 字符 (0), 0, Number, 0, 0, 0, 0, 0, 0, ftime)
RegCloseKey (hKey)
返回 (Number)

.子程序 注册表_取修改时间, 日期时间型, 公开, 获取指定注册表子项修改日期,失败则返回1601年1月1日8时。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.局部变量 hKey, 整数型
.局部变量 ftime, 文件时间_

hKey = GetOpenRegHandle (根目录, 项名称)
RegQueryInfoKey (hKey, “”, “”, 0, 0, 0, 0, 0, 0, 0, 0, ftime)
RegCloseKey (hKey)
返回 (时间_系统转日期 (时间_文件转系统 (ftime)))

.子程序 注册表_监控, 逻辑型, 公开, 监控指定的注册表项被创建、修改或删除事件,成功返回真,失败返回假。
.参数 根目录, , , 可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
.参数 项名称, 文本型
.参数 监控类型, , 可空, 可空,默认哦3.参数:1=名称;2=安全属性;3=创建、删除、修改或设置;4=安全权限;
.局部变量 hKey
.局部变量 hEvent, 整数型
.局部变量 dwError
.局部变量 ap, 安全性结构_

hKey = GetOpenRegHandle (根目录, 项名称)
hEvent = CreateEvent (ap, 真, 假, 0)
.如果真 (hEvent = 0)
返回 (假)
.如果真结束
.判断开始 (监控类型 = 1)
监控类型 = 1 ' #REG_NOTIFY_CHANGE_NAME
.判断 (监控类型 = 2)
监控类型 = 2 ' #REG_NOTIFY_CHANGE_ATTRIBUTES
.判断 (监控类型 = 3)
监控类型 = 4 ' #REG_NOTIFY_CHANGE_LAST_SET
.判断 (监控类型 = 4)
监控类型 = 8 ' #REG_NOTIFY_CHANGE_SECURITY
.默认
监控类型 = 4
.判断结束
dwError = RegNotifyChangeKeyValue (hKey, 真, 监控类型, hEvent, 真)
.如果真 (dwError ≠ 0)
返回 (假)
.如果真结束
.判断循环首 (dwError = 0)
.如果真 (WaitForSingleObject (hEvent, 0) = 0)
跳出循环 ()
.如果真结束
处理事件 ()
.判断循环尾 ()
RegCloseKey (hKey)
CloseHandle (hEvent)
返回 (真)

注册表及系统服务操作类模块源码

热门推荐

相关文章