advapi32!CreateService
功能:创建一个服务对象,并将其添加到指定的服务控制管理器数据库
函数原型:
SC_HANDLE CreateService(
SC_HANDLE hSCManager,
LPCTSTR lpServiceName,
LPCTSTR lpDisplayName,
DWORD dwDesiredAccess,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl,
LPCTSTR lpBinaryPathName,
LPCTSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCTSTR lpDependencies,
LPCTSTR lpServiceStartName,
LPCTSTR lpPassword
);
参数介绍:
hSCManager, //服务控制管理程序维护的登记数据库的句柄,由系统函数OpenSCManager 返回
lpServiceName, //以NULL 结尾的服务名,用于创建登记数据库中的关键字
lpDisplayName, //以NULL 结尾的服务名,用于用户界面标识服务
dwDesiredAccess, //指定服务返回类型
dwServiceType, //指定服务类型
dwStartType, //指定何时启动服务
dwErrorControl, //指定服务启动失败的严重程度
lpBinaryPathName, //指定服务程序二进制文件的路径
lpLoadOrderGroup, //指定顺序装入的服务组名
lpdwTagId, //忽略,NULL
lpDependencies, //指定启动该服务前必须先启动的服务或服务组
lpServiceStartName, //以NULL 结尾的字符串,指定服务帐号。如是NULL,则表示使用LocalSystem帐号
lpPassword //以NULL 结尾的字符串,指定对应的口令。为NULL表示无口令。但使用LocalSystem时填NULL
返回值:
如果函数成功,返回值将是该服务的句柄。
如果函数失败,则返回值为 NULL
备注:
创建一个可以再启动时刻运行的服务。恶意代码使用此函数来持久化,隐藏或者是启动内核驱动。
advapi32!ControlService
功能:向服务发送一个控制码
函数原型:
BOOL WINAPI ControlService(
_In_ SC_HANDLE hService,
_In_ DWORD dwControl,
_Out_ LPSERVICE_STATUS lpServiceStatus
);
参数介绍:
hService:服务的句柄,此句柄由OpenServier或者CreateService返回。
dwControl:控制码
lpServiceStatus:指向SERVICE_STATUS的指针,用来接收最近的服务状态信息。
结构体声明如下:
typedef struct _SERVICE_STATUS {
DWORD dwServiceType;// 指明服务可执行文件的类型。
DWORD dwCurrentState;// 用于通知SCM此服务的现行状态
DWORD dwControlsAccepted;// 指明服务接受什么样的控制通知
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;// 是一个服务用来报告它当前的事件进展情况的。
DWORD dwWaitHint;// 是一个服务用来报告它当前的事件进展情况的。
}
SERVICE_STATUS, *LPSERVICE_STATUS;
返回值:
成功返回非0,失败返回0.
备注:用来启动,停止,修改或发送一个信号到运行服务。如果恶意代码使用了他自己的恶意服务,你就需要分析实现服务的代码,来确定出调用的用意。
advapi32!OpenSCManager
功能:建立了一个到服务控制管理器的连接,并打开指定的数据库。
函数原型:
SC_HANDLE WINAPI OpenSCManager( _In_opt_ LPCTSTR lpMachineName, _In_opt_ LPCTSTR lpDatabaseName, _In_ DWORD dwDesiredAccess);
参数介绍:
lpMachineName 指向零终止字符串,指定目标计算机的名称。如果该指针为NULL ,或者它指向一个空字符串,那么该函数连接到本地计算机上的服务控制管理器。
lpDatabaseName 指向零终止字符串,指定将要打开的服务控制管理数据库的名称。此字符串应被置为 SERVICES_ACTIVE_DATABASE。如果该指针为NULL ,则打开默认的 SERVICES_ACTIVE_DATABASE数据库。
dwDesiredAccess 指定服务访问控制管理器的权限
返回值:
如果函数成功,返回值是一个指定的服务控制管理器数据库的句柄。
如果函数失败,返回值为NULL 。
备注:
打开一个到服务控制管理器的句柄。任何想要安装,修改或是控制一个服务的程序,都必须要调用这个函数,才能使用其他服务操纵函数。
user32!RegisterHotKey
功能:定义一个系统范围的热键
函数原型:
BOOL RegisterHotKey(HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);
参数介绍:
hWnd:接收热键产生WM_HOTKEY消息的窗口句柄。若该参数NULL,传递给调用线程的WM_HOTKEY消息必须在消息循环中进行处理。
id:定义热键的标识符。调用线程中的其他热键,不能使用同样的标识符
fsModifoers:定义为了产生WM_HOTKEY消息而必须与由nVirtKey参数定义的键一起按下的键。
vk:定义热键的虚拟键码。
返回值:
若函数调用成功,返回一个非0值。若函数调用失败,则返回值为0
备注:
用来注册一个热键,当用户任意时刻输入一个特定键值组合时,注册热键句柄将会被通知,无论当用户输入键值组合时哪个窗口是活跃的,这个函数通常被间谍软件使用,使其在键值组合中输入前对用户保持隐藏。
advapi32!RegOpenKey
功能:打开给定键
函数原型:
LONG RegOpenKey( HKEY hKey,
LPCTSTR lpSubKey,
PHKEY phkResult);
参数介绍:
HKEY hKey:要打开键的句柄
LPCTSTR lpSubKey:要打开子键的名字的地址
PHKEY phkResult :要打开键的句柄的地址
返回值:
如果调用成功,返回ERROR_SUCCESS。
如果调用失败,返回一个非零错误码
备注:
打开一个注册表键值的句柄,来进行读写。修改注册表键值通常是软件在主机上进行持久化保存的一种方法。这册表也包含了完整的操作系统和应用程序配置信息。
advapi32!StartServiceCtrlDispatcher
功能:将服务进程的主线程连接到服务控制管理器
函数原型:
BOOL WINAPI StartServiceCtrlDispatcher( _In_ const SERVICE_TABLE_ENTRY *lpServiceTable);
参数介绍:
lpServiceTable:指向 SERVICE_TABLE_ENTRY 结构体数组,包含进程可以运行的服务的入口。
结构体声明如下:
typedef struct _SERVICE_TABLE_ENTRY { LPTSTR lpServiceName;//服务名字 LPSERVICE_MAIN_FUNCTION lpServiceProc;//指向ServiceMain函数的指针
} SERVICE_TABLE_ENTRY, *LPSERVICE_TABLE_ENTRY;
返回值:
成功返回非0,失败返回0.
备注:
由服务使用来连接到服务管理控制进程的主线程。任何以服务方式运行的进程必须在启动后30秒内调用这个函数。在恶意代码中找到这个函数,可以知道他的功能应该以服务方式运行。
Advapi32!RegCloseKey
功能:释放指定注册键的句柄
函数原型:
LONG RegCloseKey(
HKEY hKey // 释放键的句柄
);
参数介绍:
hKey : [输入] 想要关闭的已经打开的键。
返回值:
如果过程执行成功,返回值是 ERROR_SUCCESS。如果功能失败,返回一个非零值,错误码在 Winerror.h 定义。可以使用FormatMessage 函数和FORMAT_MESSAGE_FROM_SYSTEM 标记获得一个分类的错误描述。
备注:
被关闭的句柄将不可以再使用,因为已经不再有效。
Advapi32!RegCreateKey
功能:用于创建或打开注册表项
函数原型:
LONG WINAPI RegCreateKey(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpSubKey,
_Out_ PHKEY phkResult
);
参数介绍:
hKey: 指向当前打开表项的句柄,或者是下列预定义保留句柄值之一,实际上就是注册表中的几个分支。
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_USERS
HKEY_LOCAL_MACHINE
lpSubKey: 指向一个空终止的字符串指针,指示这个函数将打开或创建的表项的名称。这个表项必须是由hKey参数所标识的项的子项
phkResult: 这是一个返回值,指向一个变量的指针,用来接受创建或打开的表项的句柄。当不再需要此返回的注册表项句柄时,调用RegCloseKey函数关闭这个句柄。
返回值:
0表示成功,其他任何值都代表一个错误代码.
Advapi32!RegCreateKeyEx
功能:用于创建指定的注册键
函数原型:
LONG WINAPI RegCreateKeyEx(
__in HKEY hKey,
__in LPCTSTR lpSubKey,
DWORD Reserved,
__in LPTSTR lpClass,
__in DWORD dwOptions,
__in REGSAM samDesired,
__in LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__out PHKEY phkResult,
__out LPDWORD lpdwDisposition);
参数介绍:
hKey Long,一个打开项的句柄,或者一个标准项名
lpSubKey String,欲创建的新子项的名字
Reserved Long,设为零
lpClass String,项的类名
dwOptions Long,下述常数为零:REG_OPTION_VOLATILE——这个项不正式保存下来,系统重新启动后会消失
samDesired Long,带有前缀KEY_??的一个或多个常数。它们组合起来描述了允许对这个项进行哪些操作
lpSecurityAttributes SECURITY_ATTRIBUTES,对这个项的安全特性进行描述的一个结构(用ByVal As Long传递空值)。不适用于windows 95
phkResult Long,指定用于装载新子项句柄的一个变量
lpdwDisposition Long,用于装载下列某个常数的一个变量:
REG_CREATED_NEW_KEY——新建的一个子项
REG_OPENED_EXISTING_KEY——打开一个现有的项
返回值:
成功则返回 ERROR_SUCCESS
备注:
REG_OPTION_VOLATILE不适用于windows 95
Advapi32!RegDeleteKey
功能:用来删除一个注册表键值。
函数原型:
LONG WINAPI RegDeleteKey(
__in HKEY hKey,
__in LPCTSTR lpSubKey
);
参数介绍:
hKey:注册表打开的键值的句柄。删除的键值必须是拥有访问权限的
lpSubKey: 被删除的键值名称。它必须是hkey的一个子项,但它并不能有子项。此参数不能为空。
返回值:
如果函数成功,返回值是ERROR_SUCCESS。
如果函数失败,返回值是非零错误代码定义在 Winerror.h。
备注:
删除的键值不能取消,直至最后处理它被关闭。
被删除的键值不能有子项。删除的一个键值和所有其子项,您需要枚举子项,并单独删除他们。删除键递归,使用 RegDeleteTree 或 SHDeleteKey 函数。
Advapi32!RegOpenKey
功能:打开给定键
函数原型:
LONG RegOpenKey( HKEY hKey,
LPCTSTR lpSubKey,
PHKEY phkResult);
参数介绍:
hKey, // 要打开键的句柄
lpSubKey, // 要打开子键的名字的地址
phkResult // 要打开键的句柄的地址
返回值:
如果调用成功,返回ERROR_SUCCESS。
如果调用失败,返回一个非零错误码(定义在WINERROR.H)。
备注:
RegOpenKey函数使用默认的安全存取掩码打开一个键。如果打开的键需要一个不同的掩码,函数将发生错误,返回ERROR_Access_DENIED。在这种情形下一个应用程序应该使用RegOpenKeyEx函数去指定存取掩码。
Advapi32!RegOpenKeyEx
功能:用于打开一个指定的注册表键
函数原型:
LONG RegOpenKeyEx(
HKEY hKey, // 需要打开的主键的名称
LPCTSTR lpSubKey, //需要打开的子键的名称
DWORD ulOptions, // 保留,设为0
REGSAM samDesired, // 安全访问标记,也就是权限
PHKEY phkResult // 得到的将要打开键的句柄
)
参数介绍:
hKey:需要打开的主键的名称
lpSubKey:需要打开的子键的名称
ulOptions:保留,设为0
samDesired:安全访问标记,也就是权限
phkResult: 得到的将要打开键的句柄
返回值:
如果函数调用成功,则返回0(ERROR_SUCCESS)。否则,返回值为文件WINERROR.h中定义的一个非零的错误代码。
Advapi32!RegDeleteValue
功能:用于删除一个键下的一个键值
函数原型:
LONGWINAPIRegDeleteValue(
_In_HKEY hKey,
_In_opt_LPCTSTR lpValueName
);
参数介绍:
hKey Long,一个已打开项的句柄,或标准项名之一
lpValueName String,要删除的值名。可设为vbNullString或一个空串,表示删除那个项的默认值
返回值:
成功返回ERROR_SUCCESS ,失败返回一个非零值
Advapi32!RegQueryValue
功能:取得指定项或子项的默认(未命名)值
函数原型:
LONG RegQueryValue( HKEY hkey, LPCTSTR lpSubkey, LPTSTR lpValue, PLONG lpcbValue );
参数介绍:
hKey: 一个已打开表项的句柄,或者指定一个标准项名(即注册表中的几个根注册表项)
lpSubKey: 指向一个空终止的字符串指针,指示这个函数将打开或创建的表项的名称。这个表项必须是由hkey参数所标识的子项。
lpValue: 一个返回值,指向一个缓存区,用来获得与指定子项默认值相关的一个字符串。
lpcbValue: 指定一个变量,用于装载lpValue缓冲区的长度。一旦返回,它会设为实际载入缓冲区的字节数量。该大小包含了数据长度还加上了终止符的空字符串。
返回值:
0(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码。
Advapi32!RegSetValue
功能:设置指定注册表项的默认值或未命名值的数据
函数原型:
LONG WINAPI RegSetValue( _In_ HKEY hKey, _In_opt_ LPCTSTR lpSubKey, _In_ DWORD dwType, _In_ LPCTSTR lpData, _In_ DWORD cbData );
参数介绍:
hKey: 指向当前打开表项的句柄,或者预定保留值之一(注册表中默认的几大注册表项)
lpSubKey: 指向一个空终止的字符串指针,指示这个函数将打开或创建表项的名称。可以为NULL,或空字符串,那么此函数将为参数hkey所指定的注册表项默认设置值。这个表项必须是由hkey参数所标识的子项。
dwType: 指示将被存储的信息类型。该参数必须为REG_SZ
lpData: 指向一个空终止的字符串,该字符串中包含了要为指定项的默认值设置的数据。
cdData: 指示lpData参数所指向的字符串的大小,单位是字节,但不包含字符串最后的空终止字符
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegSetValueEx
功能:设置指定值的数据和类型
函数原型:
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData
);
参数介绍:
hKey: 一个已打开项的句柄,或指定一个标准项名
lpValueName: 指向一个字符串的指针,该字符串包含了欲设置值的名称。若拥有该值名称的值并不存在于指定的注册表项中,则此函数将其加入到该项。如果此值是NULL,或指向空字符串,则此函数为该项的默认值或未命名值设置类型和数据。
Reserved: 保留值,必须强制为0
dwType: 指定将被存储的数据类型,该参数可以为
REG_BINARY 任何形式的二进制数据
REG_DWORD 一个32位的数字
REG_DWORD_LITTLE_ENDIAN 一个“低字节在前”格式的32位数字
REG_DWORD_BIG_ENDIAN 一个“高字节在前”格式的32位数字
REG_EXPAND_SZ 一个以0结尾的字符串,该字符串包含对环境变量(如“%PAHT”)的
未扩展引用
REG_LINK 一个Unicode格式的带符号链接
REG_MULTI_SZ 一个以0结尾的字符串数组,该数组以连接两个0为终止符
REG_NONE 未定义值类型
REG_RESOURCE_LIST 一个设备驱动器资源列表
REG_SZ 一个以0结尾的字符串
lpData: 指向一个缓冲区,该缓冲区包含了欲为指定值名称存储的数据。
cdData: 指定由lpData参数所指向的数据的大小,单位是字节。
返回值:
0(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegQueryInfoKey
功能:获取与一个项有关的信息
函数原型:
LONG WINAPI RegQueryInfoKey(
_In_ HKEY hKey,
_Out_opt_ LPTSTR lpClass,
_Inout_opt_ LPDWORD lpcClass,
_Reserved_ LPDWORD lpReserved,
_Out_opt_ LPDWORD lpcSubKeys,
_Out_opt_ LPDWORD lpcMaxSubKeyLen,
_Out_opt_ LPDWORD lpcMaxClassLen,
_Out_opt_ LPDWORD lpcValues,
_Out_opt_ LPDWORD lpcMaxValueNameLen,
_Out_opt_ LPDWORD lpcMaxValueLen,
_Out_opt_ LPDWORD lpcbSecurityDescriptor,
_Out_opt_ PFILETIME lpftLastWriteTime
);
参数介绍:
hKey HKEY,一个已打开项的句柄,或指定一个标准项名
lpClass LPWSTR,指定一个字串,用于装载这个注册表项的类名
lpcbClass LPDWORD,指定一个变量,用于装载lpClass缓冲区的长度。一旦返回,它会设为实际装载到缓冲区的字节数量
lpReserved LPDWORD,未用,设为NULL
lpcSubKeys LPDWORD,用于装载(保存)这个项的子项数量的一个变量
lpcbMaxSubKeyLen LPDWORD,指定一个变量,用于装载这个项最长一个子项的长度。注意这个长度不包括空中止字符
lpcbMaxClassLen LPDWORD,指定一个变量,用于装载这个项之子项的最长一个类名的长度。注意这个长度不包括空中止字符
lpcValues LPDWORD,用于装载这个项的设置值数量的一个变量
lpcbMaxValueNameLen LPDWORD,指定一个变量,用于装载这个项之子项的最长一个值名的长度。注意这个长度不包括空中止字符
lpcbMaxValueLen LPDWORD,指定一个变量,用于装载容下这个项最长一个值数据所需的缓冲区长度
lpcbSecurityDescriptor LPDWORD,装载值安全描述符长度的一个变量
lpftLastWriteTime FILETIME,指定一个结构,用于容纳该项的上一次修改时间
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegEnumKey
功能:获取指定的子键值
函数原型:
LONG WINAPI RegEnumKey(
_In_ HKEY hKey,
_In_ DWORD dwIndex,
_Out_ LPTSTR lpName,
_In_ DWORD cchName
);
参数介绍:
hKey Long,一个已打开项的句柄,或者指定一个标准项名
dwIndex Long,欲获取的子项的索引。第一个子项的索引编号为零
lpName String,用于装载指定索引处项名的一个缓冲区
cbName Long,lpName缓冲区的长度
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegEnumKeyEx
功能:枚举指定项下方的子项
函数原型:
LONG WINAPI RegEnumKeyEx(
_In_ HKEY hKey,
_In_ DWORD dwIndex,
_Out_ LPTSTR lpName,
_Inout_ LPDWORD lpcName,
_Reserved_ LPDWORD lpReserved,
_Inout_ LPTSTR lpClass,
_Inout_opt_ LPDWORD lpcClass,
_Out_opt_ PFILETIME lpftLastWriteTime
);
参数介绍:
hKey Long,一个已打开项的句柄,或者指定一个标准项名
dwIndex Long,欲获取的子项的索引。第一个子项的索引编号为零
lpName String,用于装载指定索引处项名的一个缓冲区
lpcbName Long,指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。一旦返回,它会设为实际装载到lpName缓冲区的字符数量
lpReserved Long,未用,设为零
lpClass String,项使用的类名。可以为vbNullString
lpcbClass Long,用于装载lpClass缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字符数量
lpftLastWriteTime FILETIME,枚举子项上一次修改的时间
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegEnumValue
功能:用来枚举指定项的值
函数原型:
LONG WINAPI RegEnumValue( _In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPTSTR lpValueName, _Inout_ LPDWORD lpcchValueName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPDWORD lpType, _Out_opt_ LPBYTE lpData, _Inout_opt_ LPDWORD lpcbData);
参数介绍:
hKey Long,一个已打开项的句柄,或者指定一个标准项名
dwIndex Long,欲获取值的索引。注意第一个值的索引编号为零
lpValueName String,用于装载位于指定索引处值名的一个缓冲区
lpcbValueName Long,用于装载lpValueName缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量
lpReserved Long,未用;设为零
lpType Long,用于装载值的类型代码的变量
lpData Byte,用于装载值数据的一个缓冲区
lpcbData Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegLoadKey
功能:从以前用RegSaveKey函数创建的一个文件里装载注册表信息
函数原型:
LONG WINAPI RegLoadKey( _In_ HKEY hKey, _In_opt_ LPCTSTR lpSubKey, _In_ LPCTSTR lpFile);
参数介绍:
hKey Long,HKEY_LOCAL_MACHINE、HKEY_USERS或者用RegConnectRegistry创建的一个子项
lpSubKey String,要创建的新子项的名字
lpFile String,包含了注册信息的那个文件的名字
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegReplaceKey
功能:用一个磁盘文件保存的信息替换注册表信息;并创建一个备份,在其中包含当前注册表信息
函数原型:
LONG WINAPI RegReplaceKey(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpSubKey,
_In_ LPCTSTR lpNewFile,
_In_ LPCTSTR lpOldFile
);
参数介绍:
hKey Long,一个已打开项的句柄,或指定一个标准项名
lpSubKey String,要替换的子项名称。它必须直接位于HKEY_LOCAL_MACHINE 或 HKEY_USERS控制项的下方
lpNewFile String,包含了注册表信息的一个文件的名字。这个文件是用RegSaveKey函数创建的
lpOldFile String,对当前注册表信息进行备份的一个文件的名字
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegRestoreKey
功能:从一个磁盘文件恢复注册表信息
函数原型:
LONG WINAPI RegRestoreKey(
_In_ HKEY hKey,
_In_ LPCTSTR lpFile,
_In_ DWORD dwFlags );
参数介绍:
hKey [in]:可打开注册表项的句柄
hKey Long,一个已打开项的句柄,或者指定一个标准项名
lpFile String,要从中恢复注册表信息的一个文件的名字
dwFlags Long,0表示进行常规恢复。REG_WHOLE_HIVE_VOLATILE表示临时恢复信息(系统重新启动时不保存下来)。在这种情况下,hKey必须引用HKEY_LOCAL_MACHINE 或 HKEY_USERS
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegSaveKey
功能:将一个项以及它的所有子项都保存到一个磁盘文件
函数原型:
LONG WINAPI RegSaveKey(
_In_ HKEY hKey,
_In_ LPCTSTR lpFile,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
参数介绍:
hKey Long,一个已打开项的句柄,或指定一个标准项名
lpFile String,要在其中保存注册表信息的一个磁盘文件的名字
lpSecurityAttributes SECURITY_ATTRIBUTES,为保存的信息提供的安全信息。可设为NULL,表示采用默认的安全信息(变成ByVal As Long,并传递零值)
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegConnectRegistry
功能:访问远程系统的部分注册表
函数原型:
LONG WINAPI RegConnectRegistry( _In_opt_ LPCTSTR lpMachineName, _In_ HKEY hKey, _Out_ PHKEY phkResult);
参数介绍:
lpMachineName String,欲连接的系统。采用“\\计算机名”的形式
hKey Long,HKEY_LOCAL_MACHINE 或 HKEY_USERS
phkResult Long,用于装载指定项句柄的一个变量
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegNotifyChangeKeyValue
功能:使应用程序可以接收事件通知中指定的注册表项及其子项的更改
函数原型:
LONG WINAPI RegNotifyChangeKeyValue( _In_ HKEY hKey, _In_ BOOL bWatchSubtree, _In_ DWORD dwNotifyFilter, _In_opt_ HANDLE hEvent, _In_ BOOL fAsynchronous);
参数介绍:
hKey Long,要监视的一个项的句柄,或者指定一个标准项名
bWatchSubtree Long,TRUE(非零)表示监视子项以及指定的项
dwNotifyFilter Long,下述常数的一个或多个
REG_NOTIFY_CHANGE_NAME 侦测注册表项名称的变化,以及侦测注册表的创建和删除事件
REG_NOTIFY_CHANGE_ATTRIBUTES 侦测属性的变化
REG_NOTIFY_CHANGE_LAST_SET 侦测上一次修改时间的变化
REG_NOTIFY_CHANGE_SECURITY 侦测对安全特性的改动
hEvent Long,一个事件的句柄。如fAsynchronus为False,则这里的设置会被忽略
fAsynchronus Long,如果为零,那么除非侦测到一个变化,否则函数不会返回。否则这个函数会立即返回,而且在发生变化时触发由hEvent参数指定的一个事件
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
Advapi32!RegUnloadKey
功能:卸载指定的项以及它的所有子项
函数原型:
LONG WINAPI RegUnLoadKey( _In_ HKEY hKey, _In_opt_ LPCTSTR lpSubKey);
参数介绍:
hKey Long,HKEY_LOCAL_MACHINE、HKEY_USERS或者用RegConnectRegistry打开的一个子项
lpSubKey String,要卸载的子项的名字。必须是早先用RegLoadKey函数载入的
返回值:
零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码