API函数:注册表与服务类(第25课)

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)表示成功。其他任何值都代表一个错误代码

头像
  • ¥ 59.0元
  • 市场价:99.0元
  • ¥ 89.0元
  • 市场价:129.0元
  • ¥ 199.0元
  • 市场价:199.0元
  • ¥ 298.0元
  • 市场价:498.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: