MFC创建一个注册表并关联EXCEL

参考文章:http://www.cnblogs.com/MrYuan/p/4726766.html

注册表是windows操作系统中用于管理存储系统设置的数据库,在应用程序开发过程中,用注册表为应用程序保存相关不经常变动的参数为普遍采用的方式。开发的应用程序可以在注册表中存储自己的数据,然后在开发的应用程序中调用,提供了非常便利的方式。

需要编写文件关联的东西,就是特定文件格式和某一个应用程序关联起来,就像单击.xls的文件就会用EXCEL软件打开一样。

这个东西通过注册表来实现,明白了道理之后其实编程很简单,几句话既可以解决问题。程序基本上市从网上下载下来的,然后按自己的要求改了一下,实现的功能有:将特定后缀格式的文件和我们的应用程序关联,并修改特定文件格式显示的图标。

函数实现的流程大致如下:首先打开注册表中HKEY_LOCAL_MACHINE项下的Software/Classes/.xlsx,通过返回值可以判断在注册表中有没有.xlsx这个子项,如果没有表示我们未在注册表中添加东西,如果有,则可以查询.xlsx这个子项中是否有我们所需要的某一个子键,通过这两步来判断我们是否将需要关联的信息添加到系统中。

注册表添加的函数也比较简单

通过RegCreateKey函数在注册表的HKEY_CLASSES_ROOT项下添加.xlsx的一个子项,这个HKEY_CLASSES_ROOT子项其实就对应到HKEY_LOCAL_MACHINE/Software/Classes/下,这个网上有解释,不信的话,可以windows运行菜单中输入regedit打开注册表编辑器详细查看。之后通过RegSetValueEx函数给新添加的.xlsx项中添加字段。

文件关联重要的是:

 

RegCreateKey(HKEY_CLASSES_ROOT,"RegCreateKey(HKEY_CLASSES_ROOT, "Excel.Application.11\\CLSD",&hkey);

RegSetValueEx(hkey,NULL,NULL,REG_EXPAND_SZ,(CONST BYTE *)a,strlen(a));

这个"Excel.Application.Ver\\CLSD" 在注册表中就是将设置以xlsx为后缀文件的open命令,将本程序的路径名设置为打开函数默认的程序即可。

RegisterFileRelation(_T("Excel.Application"),a,_T("Excel.Application"),_T("C://Excel.Application.ico"),_T("Excel.Application file"));

该函数是设置xlsx文件的图标的,这个函数也是网上下的,其中第三个参数就是ico图标的地址,其他参数我也不是很明白什么意思,都写为一样就可以了。

将这两个函数拷到vc++工程的app类中,将RegeditToSystem()函数添加到InitInstance()函数中,就可以运行了。

 

 

 

 

 

 

你可能感兴趣的:(随笔)