• 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
    ");
    	//关闭子键句柄
    	RegCloseKey(hKey);

  • 相关阅读:
    对象不支持此属性或方法
    继承多态
    GetType和typeof的区别
    比较高效的表格行背景变色及选定高亮JS
    C#获取存储过程的Return返回值和Output输出参数值
    删除表中重复记录,只保留一行
    实现自定义的ToolTip
    状态管理之Cookie
    Microsoft SQL Server,错误: 5120
    IE/Firefox中全局正则表达式的兼容
  • 原文地址:https://www.cnblogs.com/ke-yi-/p/10175855.html
Copyright © 2020-2023  润新知