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

      上一篇介绍了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 }

 

时间: 2024-10-25 20:55:08

WinCE下读写注册表的又一种方法的相关文章

win7系统注册表打开的3种方法

  注册表是一个非常好用的操作步骤,常常使用注册表就可以一键打开某一程序或者执行某一操作,可以帮助您节约不少时间.那么,注册表在哪里,注册表怎么打开呢?小编就以Win7系统为例子,为大家分享一下Win7系统注册表打开的3种方法.下面就一起看看具体的教程内容吧! Win7系统注册表打开的方法一: 单击左下角的[开始]按钮, 单击右侧的[运行]命令; 注册表 在[运行]对话框输入[regedit],单击[确定]按钮; Win7系统注册表打开的方法二: 打开计算机,进入系统所在盘,进入Windows文

XP系统注册表初始化的两种方法

  我们知道,注册表是电脑里一个非常重要的内容,一旦被病毒攻击就非常严重了,不仅仅是会导致系统崩溃.而一些电脑用户想初始化电脑的注册表,但是又不知道该怎么操作注册表才能初始化.下面,小编就以XP系统为例子,为大家演示一下XP系统注册表初始化的两种方法! XP系统注册表初始方法一: WinXP自带系统还原功能,前提是之前有过进行系统备份,使用自带功能将系统还原到某一个还原点,注册表也将随整个系统一起恢复. XP系统注册表初始方法二: 使用软件来处理.这里推荐大家使用Registry Purify(

win7系统下让注册表只搜索项的方法

  1.首先打开运行对话,然后输入regedit,回车打开注册表. 2.在弹出来的注册表窗口中,点击"编辑"--"查找",这时会出现三个可选选项,分别为"项""值"和"数据",把""值"和"数据"前面的对勾去掉就可以了.

WinCE下VB.NET读写注册表的参考代码

      与桌面Windows系统类似,WinCE将有关操作系统.应用程序和驱动的设置信息都保存在系统注册表中.WinCE的注册表与桌面系统中的组织方式也差不多,包括了如下四个根键:       HKEY_CLASS_ROOT,包含了文件扩展名信息和COM子系统的配置信息       HKEY_LOCAL_MACHINE,包含了系统.驱动和应用程序的配置信息       HKEY_CURRENT_USER,包含了当前用户的配置信息       HKEY_USER,包含了所有用户的信息     

QSettings读写注册表、配置文件

简述 一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表.读写配置文件. 关于QSettings的使用前面已经介绍过了,比较详细,见"更多参考",下面介绍下QSettings常用功能-读写注册表.配置文件. 简述 优点 读写注册表 一般存储 一般读取 分目录存储 替换applicationName 分组 读写配置文件 一般存储 一般读取 分组存储 分组读取 分目录存储 删除内容 疑问解释 更多参考 优点 无需指定注册表路径 一般

C#读写注册表

注册表 C#编程打造自己的IE浏览器 选择自 yudehui 的 Blog 关键字 C#编程打造自己的IE浏览器 出处 声明:本文已经放到了天极网站上,这里只是收藏而已.未经许可,不得转载 IE是现在Windows平台下用的最多的浏览器,那么如何用程序来修改IE,打造有自己的特色的IE呢? 我在这里向介绍怎么C#用通过注册表来修改IE. 首先我们来熟悉一下C#中修改注册表的方法与函数.在VC#中提供了Registry类.RegistryKey类来实现对注册表的操作.其中Registry类封装了注

在DOS下对注册表编程

在DOS方式下也能对注册表进行编程?是的.当您的Windows95/98因注册表问题而无法启动到图形界面时,您此时只有在DOS下对注册表进行手术了.因为注册表编辑器Regedit.exe其实是一个双栖型的程序,既可在DOS下运行,也可在Windows95/98下运行.许多用户可能已经知道在Windows下使用Regedit的方法,那么,要掌握DOS方式下对注册表的编程,首先要了解在DOS下如何使用注册表编辑器. 在DOS提示符下键入Regedit命令,将出现一个帮助屏幕.此屏幕给出了其命令行参数

XP系统下通过注册表修改登录背景图案

XP系统下通过注册表修改登录背景图案   在打开的运行选项窗口中,我们输入regedit命令打开注册表编辑器,如图所示: 在打开的注册表编辑器窗口中,我们依次展开以下路径:HKEY_USERS.DEFAULTControl PanelDesktop,如图所示: 接着在右边窗口找到一个名为Wallpaper的注册表值,如图所示:

教你如何清理XP系统下的注册表

  教你如何清理XP系统下的注册表           方法一:WinXP自带系统还原功能,前提是之前有过进行系统备份,使用自带功能将系统还原到某一个还原点,注册表也将随整个系统一起恢复. 方法二:使用软件来处理.这里推荐大家使用Registry Purify(注册表清理工具),该软件可以修复及清理修复许多注册表错误,效果明显.使用方便.