1.创建和修改注册表

 BOOL CTestToolCtr::GetHkey(CString strHkey, HKEY& hkey)
{
if ( == strHkey.CompareNoCase(_T("HKEY_CLASSES_ROOT")))
{
hkey = HKEY_CLASSES_ROOT;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_CURRENT_CONFIG")))
{
hkey = HKEY_CURRENT_CONFIG;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_CURRENT_USER")))
{
hkey = HKEY_CURRENT_USER;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_LOCAL_MACHINE")))
{
hkey = HKEY_LOCAL_MACHINE;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_USERS")))
{
hkey = HKEY_USERS;
}
else
{
return FALSE;
}
return TRUE;
} BOOL CTestToolCtr::CreateKey(CString strHkey,
                   CString strSubKey,
                   CString strName,
                   CString strValue)
{
if (strSubKey.IsEmpty() || strName.IsEmpty() || strValue.IsEmpty())
{
return FALSE;
} HKEY hkey;
HKEY hNewkey; if (!GetHkey(strHkey,hkey))
{
return FALSE;
} DWORD dwDisp;
if (ERROR_SUCCESS != RegCreateKeyEx(hkey, strSubKey, NULL,
NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS,
NULL, &hNewkey, &dwDisp))
{
return FALSE;
} if(ERROR_SUCCESS != RegSetValueExA(hNewkey, strName, NULL,
REG_SZ, (const BYTE*)strValue.GetBuffer(),
strlen(strValue)))
{
RegCloseKey(hNewkey);
return FALSE;
} RegCloseKey(hNewkey);
return TRUE;
}

2. 删除注册表

 BOOL CTestToolCtr::DelKey(CString strHkey, CString strSubKey, CString strName)
{
if (strSubKey.IsEmpty() || strName.IsEmpty())
{
return FALSE;
}
HKEY hkey;
if (!GetHkey(strHkey,hkey))
{
return FALSE;
} if (SHDeleteValue(hkey,strSubKey,strName) != ERROR_SUCCESS)
{
return FALSE;
}
return TRUE;
}

3. 查询注册表

 BOOL CTestToolCtr::QueryKey(CString strHkey, 
                 CString strSubKey,
                  CString strName,
                 CString& strValue)
{
strValue.Empty();
if (strSubKey.IsEmpty() || strName.IsEmpty())
{
return FALSE;
} HKEY hkey;
HKEY hNewkey;
if (!GetHkey(strHkey,hkey))
{
return FALSE;
} DWORD dwDisp;
if (ERROR_SUCCESS != RegCreateKeyEx(hkey, strSubKey, NULL, NULL,
REG_OPTION_VOLATILE, KEY_READ, NULL,
&hNewkey, &dwDisp))
{
return FALSE;
} char szData[];
memset(szData, , sizeof(szData)); DWORD dwLength = sizeof(szData);
if (ERROR_SUCCESS != RegQueryValueExA(hNewkey, strName, NULL, NULL,
(LPBYTE)szData, &dwLength))
{
RegCloseKey(hNewkey);
return FALSE;
}
strValue = szData;
RegCloseKey(hNewkey);
return TRUE; }

MFC操作注册表的更多相关文章

  1. [转]C#操作注册表

    原文链接:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html 下面我们就来用.NET下托管语言C#注册表操作,主 ...

  2. [荐]使用Js操作注册表

    使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...

  3. c++ 操作注册表

    1.       注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...

  4. .Net操作注册表--un

    C#操作注册表 导入命名空间 Using MicroSoft.Win32;//64位系统装的64位版本

  5. C#操作注册表全攻略

    相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了.这东西对Windows系统来说可是比较重要的,也是病 毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项 ...

  6. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .

    转:http://blog.csdn.net/smartsmile2012/article/details/8682295 #region 获取cpu序列号 硬盘ID 网卡硬地址 /**/ /// & ...

  7. VBS 操作注册表 十六进制

    使用VBS操作注册表,通常使用RegRead/RegWrite/RegDelete方法,如: RegRead: 'read.vbs(将以下代码存为read.vbs文件) Dim OperationRe ...

  8. win7 64bit+vs2010 操作注册表

    注册表五个根键 HKEY_CLASSES_ROOT--管理文件系统  HKEY_LOCAL_MACHINE--管理当前系统硬件配置  HKEY_LOCAL_USER--管理系统当前用户配置  HKEY ...

  9. How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置

    原文:How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置 IS脚本操作注册表在64位平台下必须有特殊的设置 if (SYSINFO.bIsWow64) then ...

随机推荐

  1. CSS中清除浮动的两种方式

    在CSS中,父元素中的子元素如果使用了float,会导致父元素塌陷,高度为0. 对于这种情况,常见的解决方式有两种. 一.增加新的div,应用clear:both属性 html: <div cl ...

  2. 未知宽度的div水平居中

    淘宝分页: div{position:relative; left:50%; float:left;}   p{position:relative; left:-50%;}

  3. 数据结构作业——Fresh Meat(优先队列)

    Fresh Meat Description 我们故事的主角是屠夫扒鸡,起初屠夫扒鸡只是一个佣兵,他先去拜了太上老君为师,学了一技能肉钩,凭着一技肉钩驰骋决斗场,达到一段以后到阿尔伯特那里偷学了二技能 ...

  4. 换肤系统(oocss方式)

    近期想做一个换肤系统,参考过Bootstrap系统,思前想后,内容不难,但就是理不清楚,主要是换肤系统的css如何设计,怎样设计可重用性最好,后期更方便修改和维护,还有一个最头疼的就是怎么给css进行 ...

  5. URL.createObjectURL和URL.revokeObjectURL

    一.URL.createObjectURL URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里,新的对象URL ...

  6. NSString属性什么时候用copy,什么时候用strong?

           我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢 ...

  7. web前端基础知识-(六)jQuery-补

    一.JS正则 1.定义正则表达式 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串: 1)构造函数 var reg=new RegExp('< ...

  8. [Java] Spring MVC 知识点

    云图: @Service 用于标注业务层组件. 在 Spring-servlet 配置xml中,component-scan 标签默认情况下自动扫描指定路径下的包(含所有子包),将带有@Compone ...

  9. Thread 学习记录 <1> -- volatile和synchronized

    恐怕比较一下volatile和synchronized的不同是最容易解释清楚的.volatile是变量修饰符,而synchronized则作用于一段代码或方法:看如下三句get代码: int i1;  ...

  10. 5天揭秘js高级技术-第二天

    一.数组 1. 什么是数组? 数组就是一组数据的集合: 其表现形式就是内存中的一段连续的内存地址: 数组名称其实就是连续内存地址的首地址: 2. 关于js中的数组定义 数组定义无需指定数据类型: 数组 ...