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的Ingress
为什么我不使用Kubernetes的Ingress 很不幸,据我所知Kubernetes的文档不是很完美,这就是为什么有很多同学在使用它的时候会遇到很多的坑,Ingress这个组件就是这些坑中的一个. ...
- python的序列化
参考:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868322157 ...
- modal html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【转载】 json字符串与JSON对象
ajax中,我们自己拼接的是一个JSON对象,以为它是无数据类型的,所以JS根据其格式默认其实对象, 你要是往后台发,要先把它装换成JSON字符. 从ajax的服务器发过的,一定是字符串,你想要把它解 ...
- jmap命令(Java Memory Map)的使用
jmap的使用能够參考: 官方文档 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html 和这篇博客 http:// ...
- 斯坦福《机器学习》Lesson4感想--1、Logistic回归中的牛顿方法
在上一篇中提到的Logistic回归是利用最大似然概率的思想和梯度上升算法确定θ,从而确定f(θ).本篇将介绍还有一种求解最大似然概率ℓ(θ)的方法,即牛顿迭代法. 在牛顿迭代法中.如果一个函数是,求 ...
- JavaScript历史状态管理
1.API (1)history.pushState:能够在不加载新页面的情况下改变浏览器的 URL history.pushState({name:"Nicholas"}, &q ...
- Ubuntu升级出现/boot空间不足解决(转)
经常升级Linux内核,导致更新时警告/boot分区空间不足.这是以为多次升级内核后,导致内核版本太多,清理一下没用的内核文件就行了.命令如下: zht@zht-Ubuntu:~$ dpkg -l ' ...
- LoadRunner lr_eval_string() 函数使用及LR中变量、参数的简单使用
lr_eval_string() 函数的主要作用:返回脚本中的一个参数当前的值, 返回值类型:char 一般多用在调试脚本时输出参数的值.具体用法如下:lr_output_message(" ...
- 通用对话弹窗CommonDialog
代码地址如下:http://www.demodashi.com/demo/12592.html 通用对话弹窗CommonDialog Version 1.0 Created by chenchangj ...