WinCE下读写注册表的又一种方法

简介: 上一篇介绍了VB.NET读写WinCE注册表的方法,用着确实方便。在驱动或者应用程序开发的过程中,其实也有一种简便的方法读写注册表,使用微软提供的CReg类(Registry helper class)。

      上一篇介绍了VB.NET读写WinCE注册表的方法,用着确实方便。在驱动或者应用程序开发的过程中,其实也有一种简便的方法读写注册表,使用微软提供的CReg类(Registry helper class)。用法也很简单,只要包括creg.hxx即可,SDK中一般会包含该头文件。

      闲话少说,直接附上代码,供参考。

  1  //  Preloader.cpp : 定义控制台应用程序的入口点。
  2  //
  3 
  4  #include  " stdafx.h "
  5  #include  < windows.h >
  6  #include  " creg.hxx "
  7 
  8  #define  GET_PATH_FROM_REG
  9 
 10  #define  REG_ROOT    HKEY_CURRENT_USER
 11  #define  REG_PATH    _T("Software")
 12  #define  REG_NAME    _T("AutoRunApp")
 13  # define  INI_PATH    _T("\\Config.ini")
 14  #define  WINCE_STANDARD_SHELL    _T("\\windows\\explorer.exe")
 15 
 16  static  TCHAR g_szFilePath[MAX_PATH];
 17 
 18  #ifdef GET_PATH_FROM_REG     // 从注册表中读取需开机时自启动程序的完整路径
 19  static  BOOL GetFilePath(TCHAR  * pFileName)
 20  {
 21       if  (pFileName)
 22      {
 23          CReg Reg;
 24          DWORD dwLen  =  MAX_PATH;
 25          Reg.Create(REG_ROOT,REG_PATH);
 26           if  (Reg.ValueSZ(REG_NAME,pFileName,dwLen))
 27          {
 28               return  TRUE;
 29          }
 30      }
 31 
 32       return  FALSE;
 33  }
 34  #else                 // 从文件中读取需开机时自启动程序的完整路径
 35  static  BOOL GetFilePath(TCHAR  * pFileName)
 36  {
 37       int  nIndex;
 38 
 39       if (pFileName)
 40      {
 41          HANDLE hFile  =  INVALID_HANDLE_VALUE;
 42           char  szPath[MAX_PATH];
 43          DWORD dwRead;
 44          hFile  =  CreateFile(INI_PATH,GENERIC_READ, 0 ,NULL,OPEN_EXISTING, 0 ,NULL);
 45           if (hFile  !=  INVALID_HANDLE_VALUE)
 46          {
 47              ReadFile(hFile,szPath,MAX_PATH, & dwRead,NULL);
 48               for (nIndex  =   0 ; nIndex  <  dwRead; nIndex ++ )
 49              {
 50                   if (szPath[nIndex]  ==   ' \r '   ||  szPath[nIndex]  ==   ' \n ' )
 51                  {
 52                       break ;
 53                  }
 54                   * pFileName ++   =  szPath[nIndex];
 55              }
 56              
 57               * pFileName  =  _T( ' \0 ' );
 58 
 59              CloseHandle(hFile);
 60               return  TRUE;
 61          }
 62      }
 63 
 64       return  FALSE;
 65  }
 66  #endif
 67 
 68  static  BOOL IsFileExist(TCHAR  * pFileName)
 69  {
 70       if  (pFileName)
 71      {
 72          HANDLE hFind  =  INVALID_HANDLE_VALUE;
 73          WIN32_FIND_DATA fd;
 74 
 75          RETAILMSG( 1 ,(TEXT( " \r\nIsFileExist(%s) " ),pFileName));
 76 
 77          hFind  =  FindFirstFile(pFileName, & fd);
 78 
 79           if  (INVALID_HANDLE_VALUE  !=  hFind)
 80          {
 81              FindClose(hFind);
 82               return  TRUE;
 83          }
 84      }
 85 
 86       return  FALSE;
 87  }
 88 
 89  static  BOOL RunAppFile(TCHAR  * pFilePath)
 90  {
 91       if  (pFilePath)
 92      {
 93          PROCESS_INFORMATION pi;
 94          BOOL bRet  =  FALSE;
 95          bRet  =  CreateProcess(pFilePath,NULL,NULL,NULL,FALSE, 0 ,NULL,
 96              NULL,NULL, & pi);
 97           if  (bRet)
 98          {
 99              CloseHandle(pi.hThread);
100              CloseHandle(pi.hProcess);
101               return  TRUE;
102          }        
103      }
104      
105       return  FALSE;
106  }
107 
108  int  _tmain( int  argc, _TCHAR *  argv[])
109  {
110       //  获取开机时需自启动程序的完整路径
111       //  判断该程序否存在
112       //  如果程序存在,则启动该程序,如果不存在,则启动WinCE默认的Shell
113       if  (GetFilePath(g_szFilePath))
114      {
115           if  (IsFileExist(g_szFilePath))
116          {
117               if (RunAppFile(g_szFilePath))
118              {
119                   return   0 ;
120              }
121          }
122      }
123      
124      RunAppFile(WINCE_STANDARD_SHELL);
125 
126       return   0 ;
127  }

 

目录
相关文章
|
Windows
Windows常见可读写目录的探测
Windows常见可读写目录的探测
152 0
Windows常见可读写目录的探测
|
Windows
电脑故障由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备. (代码 19)
电脑故障由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备. (代码 19)
1422 0
|
Windows
无需改注册表,快速解决 Windows 10 新建文件夹假死问题
无需改注册表,快速解决 Windows 10 新建文件夹假死问题
165 0
|
C++ Windows
C++读取WINDOWS注册表
C++读取WINDOWS注册表
151 0
C#编程-28:读写注册表
C#编程-28:读写注册表
142 0
|
安全
注册表读写操作(模块)
注册表读写操作(模块)
800 0
|
安全 C# Windows
[C#]解决程序Vista/Win7下因UAC导致的读写错误
在微软的操作系统中,vista和win7加入了UAC的功能,UAC(User Account Control,用户帐户控制)是微软为提高系统安全而在Windows Vista中引入的新技术,它要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员‌密码。
1233 0