FileRegistrationHelper 为文件类型注册默认打开方式
2017-06-06 15:41
519 查看
FileRegistrationHelper转自【http://www.cnblogs.com/hdl217/archive/2010/11/09/1872983.html】
public class FileRegistrationHelper { public static void SetFileAssociation(string extension, string progID) { // Create extension subkey SetValue(Registry.ClassesRoot, extension, progID); // Create progid subkey string assemblyFullPath = System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", @"\"); StringBuilder sbShellEntry = new StringBuilder(); sbShellEntry.AppendFormat("\"{0}\" \"%1\"", assemblyFullPath); SetValue(Registry.ClassesRoot, progID + @"\shell\open\command", sbShellEntry.ToString()); StringBuilder sbDefaultIconEntry = new StringBuilder(); sbDefaultIconEntry.AppendFormat("\"{0}\",0", assemblyFullPath); SetValue(Registry.ClassesRoot, progID + @"\DefaultIcon", sbDefaultIconEntry.ToString()); // Create application subkey SetValue(Registry.ClassesRoot, @"Applications\" + Path.GetFileName(assemblyFullPath), "", "NoOpenWith"); } private static void SetValue(RegistryKey root, string subKey, object keyValue) { SetValue(root, subKey, keyValue, null); } private static void SetValue(RegistryKey root, string subKey, object keyValue, string valueName) { bool hasSubKey = ((subKey != null) && (subKey.Length > 0)); RegistryKey key = root; try { if (hasSubKey) key = root.CreateSubKey(subKey); key.SetValue(valueName, keyValue); } finally { if (hasSubKey && (key != null)) key.Close(); } } }
使用方式:
在app启动时调用方法 public void SetFileAssociation() { string extension = ".test"; string title = "something here"; string extensionDescription = "some description"; FileRegistrationHelper.SetFileAssociation( extension, title + "." + extensionDescription); }
补充:程序需要管理员权限,方法:
勾选项目属性》安全性》启用clickonce安全性设定,勾选后项目目录Properties下会看见新文件app.manifest,修改该文件:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
修改后:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
保存后回到项目属性》安全性》启用clickonce安全性设定,取消勾选。
事实上注册默认打开方式通常由安装程序执行。
相关文章推荐
- Android FileHelper 打开各种类型文件
- 修改mac系统下某种文件类型的默认打开方式
- 修改mac系统下某种文件类型的默认打开方式
- 将某一类型文件还原为无默认打开方式
- 【XML默认编辑器】修改MyEclipse 10中的各种类型文件的默认编辑器(打开方式)
- Win7 : 如何修改某种文件的默认打开方式
- 【解决方案】——关于将计算机应用程序(即所有.exe文件)的默认打开方式更改为其他的应用程序(譬如IE,暴风,etc)打开
- Mac OS X系统上改变文件默认打开方式的方法
- Eclipse中批量改变文件的默认打开方式
- Win7 : 如何修改某种文件的默认打开方式
- Silverlight 5 RC新特性探索系列:11.SaveFileDialog保存文件指定默认名称---OpenFileDialog打开文件指定默认路径
- Win7如何取消文件的默认打开方式
- 关于exe文件恢复默认打开方式
- Windows7下TXT类型文件的右键菜单打开方式出现两个记事本的解决方案
- Eclipse的properties插件及设定文件的默认打开方式(图文教程)
- 修改MyEclipse文件的默认打开方式
- 打开操作,以及如果没有默认格式,弹出打开方式让用户自己选择何种程序打开文件
- 使用Win API 获取文件大小(可获取正在使用的文件,包括独占方式打开的文件GetFileSize)
- Eclipse设定文件的默认打开方式
- 扩展名 文件类型 打开方式