CAD二次开发,安装程序中写注册表

一、加载dll时写注册表

我们知道,dll加载到cad中后使用

HostApplicationServices.Current.RegistryProductRootKey()

就可以拿到当前cad的注册表,那么如果想在安装程序时写,此时并没有cad的环境,要怎么办呢?

二、获取所有已安装的cad的注册表路径

cad在安装后,会在注册表的计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\Hardcopy目录下存放所有已安装的cad的注册表位置

CAD二次开发,安装程序中写注册表

如图,由于我只安装了一个,所以这里只显示一个,我们使用代码即可获取到所有的valueName值

public static List<string> GetHardcopyList()
    {
        List<string> list = new List<string>();
        var key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Autodesk\Hardcopy");
        if (key != null)
        {
            string[] subKeyNames = key.GetValueNames();
            subKeyNames.Count().Prompt();
            foreach (string name in subKeyNames)
            {
                list.Add(name);
            }
        }
        return list;
    }

 

拿到valueName值后,我们可以用如下方法写上注册表

public static void WriteZcb()
    {
        var names=GetHardcopyList();
        var dllFile = "D:\\123.dll";
        foreach (var name in names)
        {
            var address = "SOFTWARE\\" + name + "\\Applications";
            RegisteringCAD(address, dllFile);
        }
    }
    /// <summary>
    /// 注册dll
    /// </summary>
    /// <param name="dllFile">dll文件路径</param>
    /// <returns></returns>
    public static bool RegisteringCAD(string address,string dllFile)
    {
        RegistryKey user = Registry.CurrentUser.OpenSubKey(address, true);
        if (user == null)
        {
            return false;
        }
        RegistryKey keyUserApp = user.CreateSubKey(Path.GetFileNameWithoutExtension(dllFile));
        keyUserApp.SetValue("DESCRIPTION", Path.GetFileNameWithoutExtension(dllFile), RegistryValueKind.String);
        keyUserApp.SetValue("LOADCTRLS", 2, RegistryValueKind.DWord);
        keyUserApp.SetValue("LOADER", dllFile, RegistryValueKind.String);
        keyUserApp.SetValue("MANAGED", 1, RegistryValueKind.DWord);

        return true;
    }

 其中 dllFile为要写入的dll路径

原文链接:https://www.cnblogs.com/d1742647821/archive/2023/04/11/17306914.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CAD二次开发,安装程序中写注册表 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • 基于SqlSugar的开发框架循序渐进介绍(28)– 快速构建系统参数管理界面

    在参照一些行业系统软件的时候,发现一个做的挺不错的系统功能-系统参数管理,相当于把任何一个基础的系统参数碎片化进行管理,每次可以读取一个值进行管理,这样有利于我们快速的处理业务需求,是一个挺好的功能。本篇随笔模拟这个功能,基于SqlSugar开发框架的基础上,利用代码生成工具快速生成系统参数管理界面和相关的业务类生成。 1、参考和具体实现的效果对比 参照的界…

    C# 2023年4月27日
    00
  • C#中使用async和await实现异步Udp通讯的示例代码

    当我们需要进行大量的网络IO操作时,使用异步编程可以大大提高程序的效率和性能。在C#中,我们可以使用async和await关键字来进行异步编程。 具体地,当我们进行UDP通讯时,可以将接收和发送操作都用异步的方法来进行,并且使用await关键字来等待异步操作完成。下面我们来看一个实现异步UDP通讯的示例代码。 步骤一:创建UdpClient对象 在C#中,我…

    C# 2023年6月6日
    00
  • asp.net(c#)Enterprise Library 3.0 下载

    关于asp.net(c#)Enterprise Library 3.0下载的完整攻略,可以分成以下几个步骤: 1. 打开Enteprise Library官网页面 首先需要打开Enteprise Library官网页面,官网地址为:https://github.com/MicrosoftArchive/enterprise-library-downloads…

    C# 2023年6月3日
    00
  • C#实现附件上传和下载功能

    我来介绍一下“C#实现附件上传和下载功能”的完整攻略,我们可以分为以下几个步骤: 1. 创建文件上传界面 我们需要创建一个文件上传的界面,它应该包括以下几个元素: 标题:表明这是一个文件上传界面的标题。 表单:用户需要在此表单中选择需要上传的文件,所以界面需要有一个表单,可供用户选择需要上传的文件。 “上传”按钮:用户选择完文件后,需要有一个按钮可以提交文件…

    C# 2023年6月1日
    00
  • ASP.NET MVC实现横向展示购物车

    以下是ASP.NET MVC实现横向展示购物车的完整攻略: 首先,我们需要创建一个MVC项目。在Visual Studio中,选择“新建项目”,然后选择“ASP.NET Web应用程序(.NET Framework)”。在下一个窗口中,选择“MVC”模板,然后点击“创建”。 接下来,我们需要创建一个购物车模型。在Models文件夹中,创建一个名为“Shopp…

    C# 2023年5月12日
    00
  • C#中的try catch finally用法分析

    让我来详细讲解一下 “C#中的try catch finally用法分析” 的完整攻略。 简介 在C#开发中,try、catch和finally是非常常用的代码结构。其作用是对代码的异常情况进行处理,以便程序能够正常地运行并避免崩溃。 try、catch、finally的用法 在C#中,try、catch和finally的语法为: try { // 可能会出…

    C# 2023年5月14日
    00
  • asp.net错误处理Application_Error事件示例

    ASP.NET应用程序中的Application_Error事件是用于处理未处理异常的应用程序级别错误的事件。这个事件允许我们将应用程序的控制流引导到自定义错误处理逻辑。下面是完整的“asp.net错误处理Application_Error事件示例”的攻略。 1. 创建Global.asax文件 首先,需要在应用程序的根目录下创建一个名为“Global.as…

    C# 2023年6月6日
    00
  • c# 反射+自定义特性保存数据至本地

    根据你的需求,我来详细讲解一下“c# 反射+自定义特性保存数据至本地”的完整攻略。 什么是反射和自定义特性 在深入讲解攻略之前,我们先了解一下反射和自定义特性。 反射 反射是.NET框架中一个非常强大的功能,它允许我们在运行时获取元数据,并在运行时动态地创建、操作和销毁对象。通过反射,我们可以在运行时获取并操作类的属性、方法、构造函数等信息。 自定义特性 自…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部