zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/ke-yi-/p/10175855.html
Copyright © 2011-2022 走看看