zoukankan      html  css  js  c++  java
  • 测试篇 c#文件类型关联启动程序

    我的应用场景是windows服务挂载了我的程序之后,按启动,它就修改注册表...

    但是,原本就是一件很简单的事情,貌似出现了不可思议的事情....

    我的权限已经是系统级别的,因为是服务程序嘛~

    我在修改注册表上面cad的.vlx后缀名时,想在"默认"的添加"关联的程序",结果死都添加不上.....

    最后手动删除一次,就可以了.....

    所以用代码的时候主要不要在服务程序上面调用了噢! 

    代码在这里:

            /// <summary>  
            /// 使文件类型与对应的图标及应用程序关联起来
            /// </summary>          
            public void RegisterFileType()
            {
                var sb = new StringBuilder();
                sb.Append(this.ExtendName.Substring(1, this.ExtendName.Length - 1));
                sb.Append(ProjectName);
                var relationName = sb.ToString();
    
                //在windows服务中,如果你不手工删除一次{/计算机HKEY_CLASSES_ROOT.vlx}注册表,
                //那么以下代码将会有很奇怪的表现,
                //你通过这里的代码无法删除.vlx注册表项.
                //你添加在SetValue("",relationName)默认项的在程序结束后也不会呈现,但立即GetValue("")却可以获取值..
                //手工删除一次,即可解决所有的问题..
    
                //计算机HKEY_CLASSES_ROOT.vlx 上面写引用的注册程序vlxProject
                var fileTypeKey = Registry.ClassesRoot.CreateSubKey(this.ExtendName);
                 
                fileTypeKey.SetValue("", relationName);//默认位置就是""
                fileTypeKey.SetValue("JService", relationName);//为了保证不手工删除,依然能处理...
                //fileTypeKey.GetValue("").ToString(); 
                fileTypeKey.Close();
    
                //计算机HKEY_CLASSES_ROOTvlxProject 注册了一个打开程序,这个程序内写打开的信息
                RegistryKey relationKey = Registry.ClassesRoot.CreateSubKey(relationName);
                relationKey.SetValue("", this.Description);
                RegistryKey iconKey = relationKey.CreateSubKey("DefaultIcon");
                iconKey.SetValue("", this.IconPath.Replace("\", "/"));
                RegistryKey shellKey = relationKey.CreateSubKey("Shell");
                RegistryKey openKey = shellKey.CreateSubKey("Open");
                RegistryKey commandKey = openKey.CreateSubKey("Command");
                commandKey.SetValue("", $""{this.ProjectPath}" "%1""); // " %1"表示将被双击的文件的路径传给目标应用程序 
                relationKey.Close();  
            }
    View Code

    (完)

  • 相关阅读:
    [学习笔记]设计模式之Bridge
    整数划分问题 动态规划
    powershell 发邮件
    python 对象序列化并压缩
    python的序列化与反序列化(例子:dict保存成文件,文件读取成dict)
    ACM-ICPC 2018 world final A题 Catch the Plane
    AlphaPose论文笔记《RMPE: Regional Multi-person Pose Estimation》
    《DensePose: Dense Human Pose Estimation In The Wild》阅读笔记
    [转]tensorflow 中的卷积conv2d的padding 到底要padding多少
    OpenPose论文笔记《Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields》
  • 原文地址:https://www.cnblogs.com/JJBox/p/13929515.html
Copyright © 2011-2022 走看看