RegSetValueEx函数

RegSetValueEx函数在注册表项下设置指定值的数据和类型。

LONG RegSetValueEx(
  HKEY hKey,           // handle to key
  LPCTSTR lpValueName, // value name
  DWORD Reserved,      // reserved
  DWORD dwType,        // value type
  CONST BYTE *lpData,  // value data
  DWORD cbData         // size of value data
);

参数

hkey: 当前打开的密钥或以下预定义密钥之一的句柄:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT/2000/XP: HKEY_PERFORMANCE_DATA
Windows 95/98/Me: HKEY_DYN_DATA

lpValueName:指向一个字符串的指针,该字符串包含要设置的值的名称。如果键中不存在这个名称的值,函数将其添加到键中。如果lpValueName是NULL或空字符串"",函数将为键的未命名或默认值设置类型和数据。

Reserved:保留;必须是零。

dwType:指定由lpData参数指向的数据类型的代码。有关可能类型代码的列表,请参见注册表值类型。

Ipdata:指向一个缓冲区的指针,该缓冲区包含以指定值名存储的数据。对于基于字符串的数据类型,如REG_SZ,字符串必须为空终止。对于REG_MULTI_SZ数据类型,字符串必须以双null结尾。

cbData:指定lpData参数指向的信息的大小(以字节为单位)。如果数据类型为REG_SZ、REG_EXPAND_SZ或REG_MULTI_SZ,则cbData必须包括终止null字符或字符的大小。

返回值

如果函数成功,返回值为ERROR_SUCCESS。 如果函数失败,返回值是Winerror.h中定义的非零错误代码。您可以使用FormatMessage函数和FORMAT_MESSAGE_FROM_SYSTEM标志来获得错误的通用描述。

示例代码:

#include<stdio.h>
#include<windows.h>
void main(void)
{
	//根键、子键名称和到子键的句柄
	HKEY hRoot=HKEY_LOCAL_MACHINE;
	char *szSubKey="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
	HKEY hKey;//打开指定子键
	DWORD dwDisposition=REG_OPENED_EXISTING_KEY;
	//如果不存在就创建
	LONG lRet=RegCreateKeyEx(
		hRoot,
		szSubkey,
		0,
		NULL,
		REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,
		NULL,
		&hKey,
		&dwDisposition
		);
	if(lRet!=ERROR_SUCCESS)
		return;
	//得到当前执行文件的文件名(包含路径)
	char szModule[MAX_PATH];
	GetModuleFileName(NULL,szModule,MAX_PATH);
	//创建一个新的键值,设置键值数据为文件
	lRet=RegSetValueEx(
		hKey,
		"SelfRunDemo",
		0,
		REG_SZ,
		(BYTE*)szModule,
		strlen(szModule)
		);
	if(lRet==ERROR_SUCCESS)
		printf("self run success\n");
	//关闭子键句柄
	RegCloseKey(hKey);

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值