zoukankan      html  css  js  c++  java
  • FileRegistrationHelper 为文件类型注册默认打开方式

    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 + @"shellopencommand", 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安全性设定,取消勾选。

    事实上注册默认打开方式通常由安装程序执行。

  • 相关阅读:
    技术每天一点点--2020.01-2020.12月
    【置顶】历史书单--程序员的文娱情怀
    【编程书籍 大系】 计算机开放电子书汇总
    Mysql基础代码(不断完善中)
    php 基础代码大全(不断完善中)
    【读书笔记】阅读美团技术团队文章《领域驱动设计在互联网业务开发中的实践》--2020.06.25 周四 端午节
    【置顶】技术每天一点点--2020.01-2020.12
    【日常】技术每天进展--2019.06.10
    【转载】Spring学习(1)——快速入门--2019.05.19
    vs创建qt dll,并使用qt控制台测试
  • 原文地址:https://www.cnblogs.com/RedSky/p/6951905.html
Copyright © 2011-2022 走看看