zhiye_wang

向星空仰望的越深,越发现自己的渺小

博客园 首页 新随笔 联系 订阅 管理

创建键 RegCreateKeyEx

int SetRecordVideoSavedDays(int newSavedDays)
  2 {
  3     HKEY hSubKey = NULL;
  4     LONG lRet    = 0;
  5     DWORD dwType = 0;
  6     int iRet     = 0;
  7     
  8     do 
  9     {
 10         if (newSavedDays < 0)
 11         {
 12             printf("error: input negative number\n");
 13             break;
 14         }
 15         lRet = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Cloudsoar 3C\\ServerInfo",
 16                                 0, NULL, REG_OPTION_NON_VOLATILE, 
 17                                 KEY_ALL_ACCESS, NULL, &hSubKey, NULL);       
 18         if (ERROR_SUCCESS != lRet)
 19         {
 20             printf("Create Reg failed\n");
 21             break;
 22         }
 23         
 24         lRet = RegSetValueEx(hSubKey, "VideoSavedDays", 0, REG_DWORD, (BYTE*)&newSavedDays, sizeof(newSavedDays));
 25         if (ERROR_SUCCESS != lRet)
 26         {
 27             printf("Set reg value VideoSavedDays failed\n");
 28             break;
 29         }
 30         
 31         iRet = (int)newSavedDays;
 32     } while (0);
 33     
 34     if(NULL != hSubKey)
 35     {
 36         RegCloseKey(hSubKey);
 37         hSubKey = NULL;
 38     }
 39   
 40     
 41     return iRet;
 42 }
 43 
 44 // parameter1: out, save video saved path
 45 // parameter2: in, save path length
 46 BOOL GetRecordVideoSavedPath(char *pchPath,int pathBufLen)
 47 {
 48     HKEY hSubKey    = NULL;
 49     LONG lRet       = 0;
 50     DWORD dwType    = 0;
 51     DWORD dwPathLen = pathBufLen;
 52     BOOL bRet       = FALSE;
 53     
 54     do 
 55     {
 56         lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
 57                             "SOFTWARE\\Cloudsoar 3C\\ServerInfo",
 58                             0, KEY_READ, &hSubKey);
 59         if (ERROR_SUCCESS != lRet)
 60         {
 61             printf("Open reg value VideoSavedPath failed\n");
 62             break;
 63         }
 64         
 65         lRet = RegQueryValueEx(hSubKey, "VideoSavedPath", 
 66                                 0, &dwType, (LPBYTE)pchPath, &dwPathLen);
 67         if (ERROR_SUCCESS != lRet)
 68         {
 69             printf("Query reg value VideoSavedPath failed\n");
 70             break;
 71         }
 72         
 73         bRet = TRUE;
 74         
 75     } while (0);
 76     
 77     RegCloseKey(hSubKey);
 78   
 79     return bRet;
 80 }
 81 
 82 BOOL SetRecordVideoSavePath(char *pchNewPath)
 83 {
 84     HKEY hSubKey  = NULL;
 85     LONG lRet     = 0;
 86     DWORD dwType  = 0;
 87     DWORD dwState = 0;
 88     BOOL bRet     = FALSE;
 89 
 90     do 
 91     {
 92         if (NULL == pchNewPath)
 93         {
 94             printf("error: input negative new path\n");
 95             break;
 96         }
 97         lRet = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Cloudsoar 3C\\ServerInfo",
 98             0, NULL, REG_OPTION_NON_VOLATILE, 
 99             KEY_ALL_ACCESS, NULL, &hSubKey, &dwState);       
100         if (ERROR_SUCCESS != lRet)
101         {
102             printf("Create Reg VideoSavedPath failed\n");
103             break;
104         }
105         
106         lRet = RegSetValueEx(hSubKey, "VideoSavedPath", 0, REG_SZ, (PBYTE)pchNewPath, sizeof(pchNewPath));
107         if (ERROR_SUCCESS != lRet)
108         {
109             printf("Set reg value VideoSavedPath failed\n");
110             break;
111         }
112 
113         bRet = TRUE;
114     } while (0);
115 
116     RegCloseKey(hSubKey);
117 
118     return bRet;
119 }

函数原型

 1 LONG RegCreateKeyEx(
 2 HKEY hKey, // handle to open key
 3 LPCTSTR lpSubKey, // subkey name
 4 DWORD Reserved, // reserved
 5 LPTSTR lpClass, // class string
 6 DWORD dwOptions, // special options
 7 REGSAM samDesired, // desired security access
 8 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // inheritance
 9 PHKEY phkResult, // key handle
10 LPDWORD lpdwDisposition // disposition value buffer
11 );

参数说明

1 hKey:   要打开键的句柄或以下预定义句柄
 2 HKEY_CLASSES_ROOT
 3 HKEY_CURRENT_USER
 4 HKEY_LOCAL_MACHINE
 5 HKEY_USERS
 6 lpSubKey:   指向一个用于定义子键路径的字符串
 7 Reserved,dwOptions,samDesired:   置0
 8 lpClass,lpSecurityAttributes:   置NULL
 9 phkResult:   用于接收键句柄
10 lpdwDisposition:   接收的相关信息,取值如下
11 REG_CREATED_NEW_KEY   创建成功
12 REG_OPENED_EXISTING_KEY    键已存在

打开键 RegOpenKeyEx
函数原型

1 LONG RegOpenKeyEx(
2     HKEY hKey, // handle to open key
3     LPCTSTR lpSubKey, // subkey name
4     DWORD ulOptions, // reserved
5     REGSAM samDesired, // security access mask
6     PHKEY phkResult // handle to open key
7 );

参数说明

1 hKey:     要打开键的句柄或以下预定义句柄
2 HKEY_CLASSES_ROOT
3 HKEY_CURRENT_USER
4 HKEY_LOCAL_MACHINE
5 HKEY_USERS
6 lpSubKey:   指向一个用于定义子键路径的字符串
7 ulOptions:   保留位,置0
8 samDesired:   打开键后键的操作权限
9 phResult:   接收打开的键的句柄

修改/添加键值 RegSetValueEx
函数原型

1 LONG RegSetValueEx(
2     HKEY hKey, // handle to key
3     LPCTSTR lpValueName, // value name
4     DWORD Reserved, // reserved
5     DWORD dwType, // value type
6     CONST BYTE *lpData, // value data
7     DWORD cbData // size of value data
8 );

参数说明

1 hKey:   打开键的句柄或以下预定义句柄
 2 HKEY_CLASSES_ROOT
 3 HKEY_CURRENT_USER
 4 HKEY_LOCAL_MACHINE
 5 HKEY_USERS
 6 lpValueName:   键值的名称
 7 Reserved:   保留位,置0
 8 dwType:   键值的类型
 9 lpData:   键值
10 cbData:   键值数据长度

 

posted on 2016-02-23 10:14  zhiye_wang  阅读(543)  评论(0编辑  收藏  举报