VC++ 读写注冊表,注冊文件图标关联
#include <string>
#include <iostream>
#include <Windows.h>
#include <shlobj.h>
using namespace std; //-------------------------------------------------------------------------
// 注冊文件图标关联
//-------------------------------------------------------------------------
// @strExt [in]: 须要检測的文件后缀(.txt)
// @strAppKey [in]: 扩展名在注冊表中的键值(txtfile)
// @strAppName [in]: 须要关联的引用程序(c:\app\app.exe)
// @strDefaultIcon [in]: 关联的图标
// @strDescribe [in]: 描写叙述
//-------------------------------------------------------------------------
void RegisterFileRelation(char *strExt,char *strAppKey,char *strAppName, char *strDefaultIcon, char *strDescribe)
{
char strTemp[_MAX_PATH];
HKEY hKey; RegCreateKey(HKEY_CLASSES_ROOT,strExt,&hKey);
RegSetValue(hKey,"",REG_SZ,strAppKey,strlen(strAppKey)+1);
RegCloseKey(hKey); RegCreateKey(HKEY_CLASSES_ROOT,strAppKey,&hKey);
RegSetValue(hKey,"",REG_SZ,strDescribe,strlen(strDescribe)+1);
RegCloseKey(hKey); sprintf(strTemp,"%s\\DefaultIcon",strAppKey);
RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
RegSetValue(hKey,"",REG_SZ,strDefaultIcon,strlen(strDefaultIcon)+1);
RegCloseKey(hKey); sprintf(strTemp,"%s\\Shell",strAppKey);
RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
RegSetValue(hKey,"",REG_SZ,"Open",strlen("Open")+1);
RegCloseKey(hKey); sprintf(strTemp,"%s\\Shell\\Open\\Command",strAppKey);
RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
sprintf(strTemp,"%s \"%%1\"",strAppName);
RegSetValue(hKey,"",REG_SZ,strTemp,strlen(strTemp)+1);
RegCloseKey(hKey);
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,NULL,NULL);
} //-------------------------------------------------------------------------
// 写注冊表的的方法
//-------------------------------------------------------------------------
// @root [in]: 注冊表根
// @subDir [in]: 子结构
// @regKey [in]: 注冊表项键
// @regValue [in]: 要写入的注冊表值
//-------------------------------------------------------------------------
// @return : 0表示成功,其它表示错误码
//-------------------------------------------------------------------------
int WriteRegKey(HKEY root,char * subDir,char * regKey,char * regValue){
char strTemp[_MAX_PATH];
HKEY hKey;
sprintf(strTemp,subDir); char* sclass = "";
DWORD nbf = 0;
long ret = RegCreateKeyEx(root,strTemp,0,"",REG_OPTION_NON_VOLATILE,KEY_READ|KEY_WRITE,NULL,&hKey,&nbf);
if(ret != ERROR_SUCCESS) {
return -1;
} ret = RegSetValueEx(hKey,regKey,0,REG_SZ,LPBYTE(regValue),strlen(regValue)+1);
if(ret != ERROR_SUCCESS) {
return -1;
} return 0;
} //-------------------------------------------------------------------------
// 写注冊表的的方法
//-------------------------------------------------------------------------
// @root [in] : 注冊表根
// @subDir [in] : 子结构
// @regKey [in] : 注冊表项键
// @regValue [out]: 读的的注冊表值
//-------------------------------------------------------------------------
// @return : 0表示成功,其它表示错误码
//-------------------------------------------------------------------------
int ReadRegKey(HKEY root,char * subDir,char * regKey,char* & regValue){
char strTemp[_MAX_PATH];
HKEY hKey;
sprintf(strTemp,subDir); long ret = (::RegOpenKeyExA(root,strTemp,0,KEY_READ,&hKey));
if (ret !=ERROR_SUCCESS)
{
return -1;
} DWORD valueType = REG_SZ;
DWORD cbData = 255; ret = ::RegQueryValueExA(hKey,regKey,NULL,&valueType,(LPBYTE)regValue,&cbData);
if (ret != ERROR_SUCCESS)
{
return -1;
}
RegCloseKey(hKey); return 0;
} int main(){
WriteRegKey(HKEY_CURRENT_USER,"Software\\Demo 1.0\\AppKey","path","C:\\hello\\world"); char* ret;
ret = new char[255];
ret[0] = '\0'; ReadRegKey(HKEY_CURRENT_USER,"Software\\Demo 1.0\\AppKey","path",ret);
cout << ret << endl;
delete[] ret; return 0;
}
VC++ 读写注冊表,注冊文件图标关联的更多相关文章
- QSettings配置读写-win注册表操作-ini文件读写
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写 本文地址:http:// ...
- Delphi 7使用自定义图标关联文件类型
Delphi 7使用自定义图标关联文件类型 5.2 Delphi编程(40) 版权声明:本文为博主原创文章,未经博主允许不得转载. 在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可 ...
- QSettings读写注冊表、配置文件
简述 普通情况下.我们在开发软件过程中,都会缓存一些信息到本地,能够使用轻量级数据库sqlite.也能够操作注冊表.读写配置文件. 关于QSettings的使用前面已经介绍过了.比較具体,见" ...
- C#注冊表操作汇总
一.注冊表基本知识 1) 结构 键->项->子项->值项(名称.类型.数据) REG_SZ 字符串 REG_BINARY 二进制 REG_DWORD ...
- c++ 操作注冊表
1. 注冊表简单介绍 注冊表是为Windows NT和Windows95中全部32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (W ...
- YII用户注冊表单的实现熟悉前台各个表单元素操作方式
模还是必须定义两个基本方法.还有部分label标签映射为汉字,假设进行表单验证,还要定义一些验证规则: <? php /* * 用户模型 * */ class user extends CAct ...
- C# 系统应用之注冊表使用具体解释
在平时做项目时,我们有时会遇到注冊表的操作,比如前面我们须要获取IE浏览器地址栏的信息.获取"我的电脑"地址栏输入的目录信息.USB近期使用信息等.注冊表项是注冊表的基本组织单位, ...
- PLSQL Developer过期要注冊表
打开执行输入 regedit 打表注冊表 删除 HKEY_CURRENT_USER\Software\Allround Automations HKEY_CURRENT_USER\Software\M ...
- 64位Windows操作系统中的注冊表
x64系统上有x64.x86两种注冊表,记录下. 64 位Windows系统中的注冊表分为 32 位注冊表项和 64 位注冊表项.很多 32 位注冊表项与其对应的 64 位注冊表项同名. 在64位版本 ...
随机推荐
- [置顶]
kubernetes资源类型--DaemonSet
概念 DaemonSet能够让所有(或者特定)的节点运行同一个pod. 当节点加入到K8S集群中,pod会被(DaemonSet)调度到该节点上运行,当节点从K8S集群中被移除,被DaemonSet调 ...
- ISP基础一
1.专业术语 [ColorTemp] 色温 所谓色温,简而言之,就是定量地以开尔文温度(K)来表示色彩.英国著名物理学家开尔文认为,假定某一黑体物质,能够将落在其上的所有热量吸收,而没有损失,同时又能 ...
- Jsp中如何在<c:forEach>标签内获取集合的长度
利用jstl标签functions的prefix属性的length属性值 1.首先在jsp页面导入jstl function标签 <%@ taglib prefix="fn" ...
- 搭建Git本地服务器(转)
http://www.cnblogs.com/trying/archive/2012/06/28/2863758.html 当前任务,学习中... 公司小范围用法: 服务器上做的: 在服务器上建立一 ...
- 自己定义JSTL函数
因为 jstl 函数 字符串替换不支持正則表達式 所以想用java String的 replaceAll进行替换 须要自己定义 jstl函数 首先写类 package com.salesmanb2b. ...
- 为集群配置Impala和Mapreduce
FROM: http://www.importnew.com/5881.html -- 扫描加关注,微信号: importnew -- 原文链接: Cloudera 翻译: ImportNew.com ...
- 【转】VirtualBox网卡设置
原文: https://blog.csdn.net/jwpker/article/details/45870903 ------------------------------------------ ...
- 关于批量插入数据之我见(100万级别的数据,mysql)
因前段时间去面试,问到怎样高效向数据库插入10万条记录,之前没处理过类似问题.也没看过相关资料,结果没答上来,今天就查了些资料.总结出三种方法: 測试数据库为mysql!!! 方法一: public ...
- ant create-path 报不允许匹配[xX][mM][1L]错误
将build.xml配置文件的第一行 <?xml version="1.0" encoding="UTF-8"?> 空格去掉
- 全民Scheme(1):数字游戏
刚刚看到两句话,感觉不错,分享给大家: 1.用户的问题.就是我们的问题 2.做一些用户想要的东西 (define add1 (lambda (x) (+ 1 x))) (define sub1 (la ...