Windows CE Registry

来源:互联网 发布:听杨绛谈往事知乎 编辑:程序博客网 时间:2024/04/29 18:01

// Registry.cpp : Defines the entry point for the console application.
//

//ref doc:Windows Mobile Powerdd Device Features->File Systems and Storage Management Reference > Registry Reference > Registry Functions
//function:注册表操作API测试
//date:2009.08.17

 

#include "stdafx.h"
#include <windows.h>
#include <commctrl.h>


#define dim(x) (sizeof(x)/sizeof(x[0]))

#define MYREGKEY TEXT("MyTest//Student")


int _tmain(int argc, _TCHAR* argv[])
{
 DWORD dwStatus = 0;
 HKEY  hKey = NULL;
 DWORD dwValue = 616;
 DWORD cbData;
 DWORD dwType;
 TCHAR ValueData[64];
 DWORD dwCnt = 0;

 

 //RegCreateKeyEx:如果键值存在则打开,如果不存在则创建 
 dwStatus = RegCreateKeyEx(HKEY_USERS, MYREGKEY, 0,0, REG_OPTION_NON_VOLATILE,0,0,&hKey, NULL);
 if(ERROR_SUCCESS !=dwStatus) {
  printf("RegCreateKeyEx is error./r/n");
  return -1;
 }

 

 //RegOpenKeyEx:打开指定的键
/* dwStatus = RegOpenKeyEx (HKEY_USERS, MYREGKEY, 0, 0, &hKey);
 if(ERROR_SUCCESS !=dwStatus) {
  printf("open reg fail/r/n");
  return -1;
 }
*/


 //RegSetValueEx:设置key值
 dwStatus = RegSetValueEx(hKey,TEXT("Name"),0,REG_SZ,(const BYTE *)TEXT("Michael Jordan"),sizeof(TEXT("Michael Jordan")));
 if(ERROR_SUCCESS !=dwStatus) {
  printf("sRegSetValueEx is error./r/n");
  return -1;
 } 

 dwStatus = RegSetValueEx(hKey,TEXT("Age"),0,REG_DWORD,(const BYTE *)&dwValue,sizeof(dwValue));
 if(ERROR_SUCCESS !=dwStatus) {
  printf("RegSetValueEx is error./r/n");
  return -1;
 } 

 dwStatus = RegSetValueEx(hKey,TEXT("Sex"),0,REG_SZ,(const BYTE *)TEXT("Male"),sizeof(TEXT("Male")));
 if(ERROR_SUCCESS !=dwStatus) {
  printf("RegSetValueEx is error./r/n");
  return -1;
 }

 

 //RegFlushKey:回写保存设置的key值
 dwStatus = RegFlushKey(hKey);
    if(ERROR_SUCCESS !=dwStatus)
    {
     printf("RegFlushKey is error./r/n");
        RegCloseKey(hKey);
        return -1;
    }

 

 //RegQueryValueEx:获取key值
 dwStatus = RegQueryValueEx(hKey, TEXT("Name"), NULL, &dwType, (LPBYTE) ValueData, (LPDWORD)&cbData);
 if(ERROR_SUCCESS !=dwStatus)
    {
     printf("RegQueryValueEx is error./r/n");
        RegCloseKey(hKey);
        return -1;
    }
 printf("Student Name:%ls/r/n",ValueData);

 

/* 
 //RegDeleteKey:删除MYREGKEY的键,包括其子键。
 //注意:调用RegDeleteKey删除MYREGKEY之前,需要先调用RegCloseKey关闭该键,否则会操作失败
 RegCloseKey(hKey);

 dwStatus = RegDeleteKey(HKEY_USERS,MYREGKEY);
 if(ERROR_SUCCESS != dwStatus)
    {
     printf("RegDeleteKey is error./r/n");
        RegCloseKey(hKey);
        return -1;
    }
*/

 

 //RegDeleteValue:删除指定的键值
/* dwStatus = RegDeleteValue(hKey,TEXT("Age"));
 if(ERROR_SUCCESS != dwStatus)
    {
     printf("RegDeleteValue is error./r/n");
        RegCloseKey(hKey);
        return -1;
    }
*/ 

 

 //RegQueryInfoKey:获取指定键的相应信息
/* dwStatus = RegQueryInfoKey (HKEY_USERS, NULL, NULL, 0, &dwCnt, NULL, NULL, NULL,NULL, NULL, NULL, NULL);
 if(ERROR_SUCCESS != dwStatus)
    {
     printf("RegQueryInfoKey is error./r/n");
        RegCloseKey(hKey);
        return -1;
    }
 printf("There are %d SubKeys/r/n",dwCnt);
*/


 //RegEnumKeyEx:枚举获取指定的键子键名、长度等
/* UINT index = 0;
 DWORD dwNSize;
    TCHAR szName[128];

 dwStatus = RegEnumKeyEx (HKEY_USERS, index, szName, &dwNSize, NULL, NULL, NULL, NULL);
 while (dwStatus == ERROR_SUCCESS) {
  printf("szName:%ls,length:%d/r/n",szName,dwNSize); 
  dwStatus = RegEnumKeyEx (hKey, ++index, szName, &dwNSize, NULL, NULL, NULL, NULL);
 }
*/

 

 //RegEnumValue:枚举获取指定的键值名、内容长度等
/* UINT nCnt = 0;
 TCHAR szName[128];
 DWORD dwNSize;
 BYTE bData[128];
 DWORD dwDSize;

 dwNSize = dim(szName);
 dwDSize = dim(bData);
 dwStatus = RegEnumValue (hKey, nCnt, szName, &dwNSize,NULL, &dwType, bData, &dwDSize);
 while (dwStatus == ERROR_SUCCESS) {
  dwNSize = dim(szName);
  dwDSize = dim(bData);
  dwStatus = RegEnumValue (hKey, ++nCnt, szName, &dwNSize,NULL, &dwType,bData, &dwDSize);
 }
*/

 

 //RegCloseKey:关闭打开的键
    RegCloseKey(hKey);


 return 0;
}

原创粉丝点击