织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 杂项技术 > 安装制作 >

操作注册表进行文件类型与程序关联

落鹤生 发布于 2011-10-18 07:48 点击:次 
落鹤生:为EasyPlayer做了安装包,但是文件类型关联一直存在问题,这个是用VC来进行关联的代码,最好还是在Install Shield里或者SetFactory里进行关联,等回头找到解决方案了再补充上来吧。
TAG:

落鹤生:为EasyPlayer做了安装包,但是文件类型关联一直存在问题,这个是用VC来进行关联的代码,最好还是在Install Shield里或者SetFactory里进行关联,等回头找到解决方案了再补充上来吧。

文件关联,网上资料不多,提供了两个简单的函数,使用方便。

  1. #include <windows.h> 
  2. #include <stdio.h> 
  3.  
  4. //------------------------------------------------
  5. // 检测文件关联情况 
  6. // strExt: 要检测的扩展名(例如: ".txt") 
  7. // strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile") 
  8. // 返回TRUE: 表示已关联,FALSE: 表示未关联 
  9. BOOL CheckFileRelation(const char *strExt, const char *strAppKey) 
  10.     int nRet=FALSE; 
  11.     HKEY hExtKey; 
  12.     char szPath[_MAX_PATH];  
  13.     DWORD dwSize=sizeof(szPath);  
  14.     if(RegOpenKey(HKEY_CLASSES_ROOT,strExt,&hExtKey)==ERROR_SUCCESS) 
  15.     { 
  16.         RegQueryValueEx(hExtKey,NULL,NULL,NULL,(LPBYTE)szPath,&dwSize); 
  17.         if(_stricmp(szPath,strAppKey)==0) 
  18.         { 
  19.             nRet=TRUE; 
  20.         } 
  21.         RegCloseKey(hExtKey); 
  22.         return nRet; 
  23.     } 
  24.     return nRet; 
  25.  
  26. //----------------------------------------
  27. // 注册文件关联 
  28. // strExe: 要检测的扩展名(例如: ".txt") 
  29. // strAppName: 要关联的应用程序名(例如: "C:/MyApp/MyApp.exe") 
  30. // strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile") 
  31. // strDefaultIcon: 扩展名为strAppName的图标文件(例如: "C:/MyApp/MyApp.exe,0") 
  32. // strDescribe: 文件类型描述 
  33. void  RegisterFileRelation(char *strExt, char *strAppName, char *strAppKey
  34. char *strDefaultIcon, char *strDescribe) 
  35.     char strTemp[_MAX_PATH]; 
  36.     HKEY hKey; 
  37.     
  38.     RegCreateKey(HKEY_CLASSES_ROOT,strExt,&hKey); 
  39.     RegSetValue(hKey,"",REG_SZ,strAppKey,strlen(strAppKey)+1); 
  40.     RegCloseKey(hKey); 
  41.     
  42.     RegCreateKey(HKEY_CLASSES_ROOT,strAppKey,&hKey); 
  43.     RegSetValue(hKey,"",REG_SZ,strDescribe,strlen(strDescribe)+1); 
  44.     RegCloseKey(hKey); 
  45.     
  46.     sprintf(strTemp,"%s//DefaultIcon",strAppKey); 
  47.     RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey); 
  48.     RegSetValue(hKey,"",REG_SZ,strDefaultIcon,strlen(strDefaultIcon)+1); 
  49.     RegCloseKey(hKey); 
  50.     
  51.     sprintf(strTemp,"%s//Shell",strAppKey); 
  52.     RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey); 
  53.     RegSetValue(hKey,"",REG_SZ,"Open",strlen("Open")+1); 
  54.     RegCloseKey(hKey); 
  55.     
  56.     sprintf(strTemp,"%s//Shell//Open//Command",strAppKey); 
  57.     RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey); 
  58.     sprintf(strTemp,"%s /"%%1/"",strAppName); 
  59.     RegSetValue(hKey,"",REG_SZ,strTemp,strlen(strTemp)+1); 
  60.     RegCloseKey(hKey); 
  61. }  

 

(落鹤生)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201110/15151.html]
本文出处:罗索工作室 作者:落鹤生
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容